QT学习第七课:QT系统中的坐标
声明:此文章仅是个人在学习狄泰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组件可以在坐标系统中进行大小设置