Qt居中顯示圖片,圖過大則出現滾動條(ui方式)的兩種方法Label+ScrollArea、GraphicsView

方式一:Label+ScrollArea

窗簾與窗戶(界面上拖入ScrollArea控件,會默認帶個窗簾)

注意,默認的這個窗簾的 MinimumSize 超過窗戶大小,纔出現滾動條。(注意是MinimumSize而非Size)

但是,正常的理解是Size超過窗戶就應該出現滾動條。當指定自己的窗簾時,如label,就符合常理了。

【拖入控件】

界面上拖入ScrollArea控件、Label控件(注意不要放入ScrollArea控件中,因爲它要當窗簾,而不是掛在默認的窗簾上)

【屬性設置】如果覺得label控件太佔位置,可以把大小設置爲0,0

scrollArea:不勾選widgetResizable,sizeAdjustPolicy改爲AdjustToContents,alignment改爲AlignHCenter、AlignVCenter
label:不勾選scaledContents(圖像適應控件),geometry的寬度、高度設置爲0(如果覺得label控件太佔位置)

【代碼】

    QImage *img=new QImage;
    img->load("D:/豎長.bmp"); //載入圖像
    ui->label->setPixmap(QPixmap::fromImage(*img)); //圖像顯示在label上
    ui->label->adjustSize(); //控件適應圖像(注意必須放到上一句代碼之後)
    ui->scrollArea->setWidget(ui->label); //設置label爲scrollArea的窗簾

 

方式二:GraphicsView

一個控件等效於方式一的兩個控件。也有種窗簾、窗戶的感覺。

什麼屬性都不用設置,直接拖控件寫代碼。

    QGraphicsScene *scene=new QGraphicsScene(); //創建場景,載入圖像
    scene->addPixmap(QPixmap("D:/豎長.bmp"));
    ui->graphicsView->setScene(scene); //用控件顯示這個場景

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章