QT实验分析教程 Qt中的坐标系统 --- geometry,frameGeometry()(5)
QWidget类中的坐标系统成员函数
x():左上角的坐标(屏幕左上角是远点(0,0))
y():左上角的坐标(屏幕左上角是远点(0,0))
width():客户区的宽度
height():客户区的高度
geometry.x():不包括标题栏、边框的客户区
geometry.y():不包括标题栏、边框的客户区
geometry.width():客户区的宽度
geometry.height():客户区的高度
frameGeometry.x():左上角的坐标
frameGeometry.y():左上角的坐标
frameGeometry.width():窗口真正的宽度(包括边框和标题栏)
frameGeometry.height():窗口真正的高度(包括边框和标题栏)
示例程序:
#include <QtGui/QApplication>
#include <QDebug>
#include "MainWindow.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
w.show();
qDebug() << "QWidget:";
qDebug() << w.x();
qDebug() << w.y();
qDebug() << w.width();
qDebug() << w.height();
qDebug() << "QWidget::geometry()";
qDebug() << w.geometry().x();
qDebug() << w.geometry().y();
qDebug() << w.geometry().width();
qDebug() << w.geometry().height();
qDebug() << "QWidget::framegeometry()";
qDebug() << w.frameGeometry().x();
qDebug() << w.frameGeometry().y();
qDebug() << w.frameGeometry().width();
qDebug() << w.frameGeometry().height();
return a.exec();
}
结果如下:
注意事项:
geometry和framGeometry()中的几何数据必须在show()调用后才有效!
QWidget类提供了成员函数:
改编窗口部件的大小
- void resize(int w, int h)
- void resize(const QSize &)
改编窗口部件的位置
- void move(int x, int y)
- void move(const QPoint &)
示例程序:
#include <QtGui/QApplication>
#include <QDebug>
#include "MainWindow.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
w.resize(100, 100);
w.move(120,120);
w.show();
qDebug() << "QWidget:";
qDebug() << w.x();
qDebug() << w.y();
qDebug() << w.width();
qDebug() << w.height();
qDebug() << "QWidget::geometry()";
qDebug() << w.geometry().x();
qDebug() << w.geometry().y();
qDebug() << w.geometry().width();
qDebug() << w.geometry().height();
qDebug() << "QWidget::framegeometry()";
qDebug() << w.frameGeometry().x();
qDebug() << w.frameGeometry().y();
qDebug() << w.frameGeometry().width();
qDebug() << w.frameGeometry().height();
return a.exec();
}
QPushButton组件
示例程序:
#include <QtGui/QApplication>
#include <QPushButton>
#include <QDebug>
#include "MainWindow.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
QPushButton b(&w); //生成QPushButton对象,其父组件为QWidget
QPushButton b1(&w); //生成QPushButton对象,其父组件为QWidget
b.setText("Button"); //设置显示的字符串
b.move(10, 10); //移动坐标(10, 10)
b.resize(100, 50); //设置大小width = 100, height = 25
b1.setText("Button"); //设置显示的字符串
b1.move(120, 10); //移动坐标(10, 10)
b1.resize(100, 50); //设置大小width = 100, height = 25
w.resize(100, 100);
w.move(120,120);
w.show();
qDebug() << "QWidget:";
qDebug() << w.x();
qDebug() << w.y();
qDebug() << w.width();
qDebug() << w.height();
qDebug() << "QWidget::geometry()";
qDebug() << w.geometry().x();
qDebug() << w.geometry().y();
qDebug() << w.geometry().width();
qDebug() << w.geometry().height();
qDebug() << "QWidget::framegeometry()";
qDebug() << w.frameGeometry().x();
qDebug() << w.frameGeometry().y();
qDebug() << w.frameGeometry().width();
qDebug() << w.frameGeometry().height();
return a.exec();
}
小结
Qt中的几何坐标以左上角为原定
水平为x轴,从左向右为正向
垂直为y轴,从上到下为正向
Qt中的GUI组件以左上角进行定位
Qt中的GUI组件可以在坐标系统中进行大小设置