1. 坐标系统
- GUI 操作系统都有特定的坐标系统
- 图形界面程序在坐标系统中进行窗口和部件的定位
- 定位类型:顶级窗口部件的定位;窗口部件内部的定位;窗口部件的大小设置
- QT 使用同一的坐标系统定位窗口部件的位置和大小
- QT 部件类提供成员函数在坐标系统中进行定位
- QWidget 类提供了窗口部件所需的坐标系统成员函数
2. 坐标系统相关的成员函数
QWidget 类中的坐标系统成员函数:
- x(),包括了外边框
- y(),包括了外边框
- width(),不包括外边框
- height(),不包括外边框
- geometry(),不包括外边框
- frameGeometry(),不包括外边框
#include <QApplication>
#include <QWidget>
#include <QDebug>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QWidget w;
w.show();
qDebug()<<"QWidget: "<<w.x()<<" "<<w.y()<<" "<<w.width()<<" "<<w.height();
qDebug()<<"QWidget::geometry: "<<w.geometry().x()<<" "<<w.geometry().y()<<" "<<w.geometry().width()<<" "<<w.geometry().height();
qDebug()<<"QWidget::frameGeometry: "<<w.frameGeometry().x()<<" "<<w.frameGeometry().y()<<" "<<w.frameGeometry().width()<<" "<<w.frameGeometry().height();
return a.exec();
}
执行结果:
注意事项:geometry() 和 frameGeometry() 中的几何数据必须在 show() 调用之后才有效!
3. 窗口部件大小的设置
QWidget类提供了成员函数:
- 改变窗口部件的大小
// 不包括边框
void resize(int w, int h)
void resize(const QSize &)
- 改变窗口部件的位置
// 包括边框
void move(int x, int y)
void move(const QPoint &)
4. QPushButton 组件
- QPushButton 用于接受用户点击事件
- QPushButton 能够显示提示性字符串
- QPushButton 是功能性组件,需要父组件作为容器
- QPushButton 能够在父组件中进行定位
QWidget w; // 生成 QWidget对象,顶级组件
QPushButton b(&w); // 生成 QPushButton 对象,其父组件为 QWidget
b.setText("Button"); // 设置显示的字符串
b.move(10,10); // 移动到坐标 (10,10)
b.resize(100,25); // 设置大小 width = 100,height = 25
5. 总结
- QT 中的几何坐标以左上角为原定,水平为x轴,从左向右为正向;垂直为y轴,从上到下为正向
- QT 中的 GUI 组件以左上角进行定位
- QT 中的GUI 组件可以在坐标系中进行大小设置