QT学习笔记(三)——QT中的坐标系统及窗口位置,大小配置
一、QWidget类中的坐标系统成员函数
Qt中的几何坐标以左上角为原点,其中的GUI组件以左上角进行定位
1.1 表示窗口左上角位置和客户区的长宽
——x()//窗口左上角的横坐标
——y()//窗口左上角的纵坐标
——width() //表示客户区的宽度
——height()//表示客户区的高度
1.2 表示客户区左上角位置和客户区长宽
——geometry()//客户区的位置信息:geometry().x(),geometry().y()客户区左上角坐标;width、height表示客户区的宽度和高度
- x(),y(),width(),height()
1.3 表示窗口左上角位置和窗口的长宽
——frameGeometry()//成员函数,表示窗口的高度和宽度
- x(),y(),width(),height()
注1:调试时需要先调用#include <QDebug>头文件
注2:QWidget提供的x,y表示的坐标与frameGeometry().x(),frameGeometry().y()的相同。
width(),height()表示的内容和geometry().width(),geometry().height()的相同。
提供三套坐标函数的目的是为了方便跨平台设计。
#include "show.h"
#include <QtWidgets/QApplication>
#include <qdebug.h>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QWidget w;//生成QWidget对象,*组件
w.resize(400, 400);//设置窗口中客户区的长宽
w.move(10, 10);//设置窗口的位置
w.show();//这个要放在配置窗口几何信息代码的上面
qDebug() << "QWidget:"; //输出qdebug对应的字符串
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()和frameGeometry()中的几何数据必须在show()调用后才有效!!!
因为qt在不同的平台下,都能生成图形界面,但窗口外观有差异。所以在窗口出现前,我们不知道这段代码是在什么平台下编译的,所以只有在窗口出现在相应平台下时,才能得到有效的几何数据。
二、窗口部件的大小设置
2.1 QWidget类提供了成员函数:
——改变窗口部件的大小
void resize (int w, int h); //w,h表示窗口区的长宽,其取值是有限度的,window下,窗口的最小值是116*116.取小于这个值的,系统也会默认生成116*116的窗口。所以在创建项目时要考虑到不同系统的窗口部件长宽限制。
void resize(const QSize &);
——改变窗口部件的位置
void move (int x, int y); void move (const QPoint &); |
三、QPushButton组件
作用:
1. 用于接受用户点击事件;2.能够显示提示性字符串;3.是功能性组件,需要父组件作为容器; 4. 能够在父组件中进行定位
QWidget w; //生成QWidget对象,*组件 QPushButton b(&w); //生成QPushButton对象,其父组件为QWidget
b.setText("Button"); //设置显示的字符串 b.move(10,10); //移动到坐标(10,10) b.resize(10,25); //设置大小width = 10,height = 25 |
注:需要先在程序中添加#include <QPushButton>头文件
#include "show.h"
#include <QtWidgets/QApplication>
#include <qdebug.h>
#include <qpushbutton.h>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QWidget w; //生成QWidget对象,*组件
QPushButton b(&w);//生成QPushButton对象,其父组件为QWidget
b.setText("Button");//设置按键显示的字符串
b.move(10, 10);//移动按钮图案到坐标(10,10)位置
b.resize(100, 25);//设置按钮大小width = 10,height = 25
QPushButton b1(&w);//生成QPushButton对象,其父组件为QWidget
b1.setText("Button1");//设置按键显示的字符串
b1.move(140, 10);//移动按钮图案到坐标(10,10)位置
b1.resize(100, 25);//设置按钮大小width = 10,height = 25
QPushButton b2(&w);//生成QPushButton对象,其父组件为QWidget
b2.setText("Button2");//设置按键显示的字符串
b2.move(10, 100);//移动按钮图案到坐标(10,10)位置
b2.resize(100, 25);//设置按钮大小width = 10,height = 25
w.show();//显示窗口,要先配置窗口内容信息,再显示窗口
return a.exec();
}
注:要注意w.show();的位置,一般放在窗口内部配置的代码下面,即先配置窗口内部,再显示。
四、QLabel组件
作用:
1. 能够显示提示性字符串;2.是功能性组件,需要父组件作为容器;3. 能够在父组件中进行定位
QWidget w; //生成QWidget对象,*组件 QLabel *lb = new QLabel(&w); //生成QPushButton对象,其父组件为QWidget
lb->setText("Button"); //设置显示的字符串 lb->setGeometry(QRect(10, 10, 150, 30)); //移动到坐标(10,10),长为150,宽为30的矩形 lb->setFrameStyle(QFrame::Panel | QFrame::Sunken); //设置外观 |
看不太懂的参考 https://blog.csdn.net/xgbing/article/details/7762331