1. 程式人生 > >QT視窗尺寸,視窗大小和大小改變引起的事件 QResizeEvent。

QT視窗尺寸,視窗大小和大小改變引起的事件 QResizeEvent。

 


frameGeometry()


幾何尺寸(位置+大小)


對於視窗,包含視窗裝飾器


x()y()pos()


只包含位置資訊(左上角座標)


move()


只移動位置


geometry()


幾何尺寸(位置+大小)


不包含視窗裝飾器


width()height()rect()size()


只包含大小資訊


setGeometry()


改變位置+大小


resize()


只改變大小



一直在考慮怎麼使中心視窗在主視窗全屏之後,中心視窗也按比例放大。
其中包括,中心視窗的大小適應,中心視窗
1.建立你的UI,其中使用弄好你的頂級佈局,選中widget

視窗 - 點選右鍵 - 佈局 - 柵格佈局。

2.建構函式中

複製程式碼

  1.   centralWidget = new QWidget;
       QWidget * a = new QWidget(centralWidget);
       ui1->setupUI(a);
         a->hide();
       QWidget * b = new QWidget(centralWidget);
       ui2->setupUI(b);
         b->hide();
       setCentralWidget(centralWidget) //
    這樣的好處在於,你可以弄很多ui,想使用哪個UI
    直接uin->setupUI(widgetn),widgetn->show()就可以了。



3.但是如果你想拖動主視窗的時候,能夠讓視窗中的元件隨著視窗也能縮放的話,需要重寫resizeEvent,原因在於,在構造之後,子視窗的大小就是固定的。

複製程式碼

  1. void resizeEvent(QresizeEvent* size){
        centralWidget->resize(frameGeometry().size()); //
    是採用size()還是frameGeometry.size()根據自己的需求。
    }



有什麼問題,請留言說明,大家一起交流並且解決。

附加裝置相關的螢幕尺寸資訊,如果你重寫resizeEvent

的話,我認為這是不必要的。
QDesktopWidget* desktopWidget = QApplication::desktop();
//
得到客戶區矩形
QRect clientRect = desktopWidget->availableGeometry();
//
得到應用程式矩形
QRect applicationRect = desktopWidget->screenGeometry();