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

猜你喜欢

转载自blog.csdn.net/qq_37764129/article/details/81407544