聲明:此文章僅是個人在學習狄泰QT課程所做的筆記,文章中包含狄泰資料的,一切版權歸狄泰軟件所有!
一、坐標系統
1.1GUI操作系統都有特定的坐標系統
1.2圖形界面程序在坐標系統中進行窗口和部件的定位
1.3定位的類型:
1.3.1頂級窗口部件的定位
1.3.2窗口內部件的定位
1.3.3窗口部件的大小設置
1.4QT使用統一的坐標系統定位窗口部件的位置和大小
1.5QT部件提供成員函數在坐標系統中進行定位
1.6QWidget類提供了窗口部件所需要的坐標系統成員函數
二、QWidget類中的坐標系統成員函數
x.()
y.()
width()
height()
geometry()類中也包括上述成員函數
x.(),y(),width(),height()
frameGeometry()
x.(),y(),whidth(),height()
那三者有什么關系呢?請看下圖。
QWidget中的x.(),y.()和frameGeometry()的x.(),y.()獲取的內容是一樣的,都是獲取界面包括標題欄頂最左上角的x和y軸坐標。QWidget中的width()和height()獲取到的信息和geomatry中的width()、height()獲取的信息完全一樣。
geomatry中的x.(),y.()獲取的坐標是不包括標題欄最左上角位置(在此叫用戶區),同樣geometry()中的width()和height()獲取的也是用戶區中的寬度和高度。歸根結底是用於獲取用戶區域的坐標信息。
frameGeometry()中的width(),height()獲取的是界面包括標題欄邊框的寬度和高度。
注意:在調用以上函數的時候特別要注意:geometry()和frameGeometry()中的數據,必須在show()調用后才有效。如果是在之前調用的則返回的數據是沒有意義的!
示例1:
1 #include "MainWin.h" 2 #include <QDebug> 3 #include <QApplication> 4 5 int main(int argc, char *argv[]) 6 { 7 QApplication a(argc, argv); 8 Widget w; 9 w.show(); 10 11 qDebug() << "------------------------------------------------"; 12 qDebug() << "打印QWidget:x.()值 = " << w.x(); 13 qDebug() << "打印QWidget:y.()值 = " << w.y(); 14 qDebug() << "打印QWidget:width.()值 = " << w.width(); 15 qDebug() << "打印QWidget:height.()值 = " << w.height(); 16 qDebug() << "------------------------------------------------"; 17 18 qDebug() << "------------------------------------------------"; 19 qDebug() << "打印QWidget:geometry().x.()值 = " << w.geometry().x(); 20 qDebug() << "打印QWidget:geometry().y.()值 = " << w.geometry().y(); 21 qDebug() << "打印QWidget:geometry().width.()值 = " << w.geometry().width(); 22 qDebug() << "打印QWidget:geometry().height.()值 = " << w.geometry().height(); 23 qDebug() << "------------------------------------------------"; 24 25 26 qDebug() << "------------------------------------------------"; 27 qDebug() << "打印QWidget:frameGeometry().x.()值 = " << w.frameGeometry().x(); 28 qDebug() << "打印QWidget:frameGeometry().y.()值 = " << w.frameGeometry().y(); 29 qDebug() << "打印QWidget:frameGeometry().width.()值 = " << w.frameGeometry().width(); 30 qDebug() << "打印QWidget:frameGeometry().height.()值 = " << w.frameGeometry().height(); 31 qDebug() << "------------------------------------------------"; 32 33 34 return a.exec(); 35 }
打印效果:
------------------------------------------------ 打印QWidget:x.()值 = 752 打印QWidget:y.()值 = 340 打印QWidget:width.()值 = 400 打印QWidget:height.()值 = 300 ------------------------------------------------ ------------------------------------------------ 打印QWidget:geometry().x.()值 = 760 打印QWidget:geometry().y.()值 = 370 打印QWidget:geometry().width.()值 = 400 打印QWidget:geometry().height.()值 = 300 ------------------------------------------------ ------------------------------------------------ 打印QWidget:frameGeometry().x.()值 = 752 打印QWidget:frameGeometry().y.()值 = 340 打印QWidget:frameGeometry().width.()值 = 416 打印QWidget:frameGeometry().height.()值 = 338 ------------------------------------------------
三、QT窗口部件的大小設置
3.1QWidget類提代了成員函數:
-更改窗口部件的大小
void resize(int w, int h)
void (const QSize&)
-更改窗口部件的位置
void move(int x, int y)
void move(const QPoint&)
四、QpushButton組件
4.1QPushButton:用於接受用戶點擊事件
4.2QPushButton:能夠顯示提示性字符串
4.3QPushButton:是功能性組件,需要父組件作為容器
4.4QPushButton:是能夠在父組件中進行定位
示例:
1 Qwidget w; //生成QWidget對象,頂級組件 2 QPushButton b(&w); //生成QPushButton對象,其父組件為QWidget 3 b.setText("Button"); //設置顯示的字符串 4 b.move(10, 10); //移動到坐標10,10 5 b.resize(100, 25); //設置大小width=100,height=25
示例2:
1 #include "MainWindow.h" 2 #include <QApplication> 3 #include <QPushButton> 4 #include <QDebug> 5 6 7 int main(int argc, char *argv[]) 8 { 9 QApplication a(argc, argv); 10 Widget w; 11 12 13 QPushButton b1(&w); 14 QPushButton b2(&w); 15 16 b1.setText("第1按鍵"); //設置顯示的字符串 17 b1.move(10, 10); //移動按鍵到坐標10.10 18 b1.resize(100,30); //設置按鍵大小 19 20 b2.setText("第2按鍵"); 21 b2.move(200,10); 22 b2.resize(100,30); 23 24 w.resize(350, 300); //如果此處的小大小於系統設定的最小值,將以系統的為准 25 w.move(200, 200); 26 27 28 w.show(); 29 return a.exec(); 30 }
顯示效果圖:
小結:
QT中幾何坐標 以左上角為原點
-水平為x軸,從左向右為正向
-垂直為y軸,從上到下為正向
QT中的GUI組件以左上角進行定位
QT中的GUI組件可以在坐標系統中進行大小設置