QT学习笔记(三)——QT中的坐标系统及窗口位置,大小配置

 

2018年08月05日 11:40:15 马大哈先生 阅读数:1676

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_37764129/article/details/81407544

一、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()的相同。

提供三套坐标函数的目的是为了方便跨平台设计

 
  1. #include "show.h"

  2. #include <QtWidgets/QApplication>

  3. #include <qdebug.h>

  4.  
  5. int main(int argc, char *argv[])

  6. {

  7. QApplication a(argc, argv);

  8. QWidget w;//生成QWidget对象,顶级组件

  9.  
  10. w.resize(400, 400);//设置窗口中客户区的长宽

  11. w.move(10, 10);//设置窗口的位置

  12. w.show();//这个要放在配置窗口几何信息代码的上面

  13.  
  14. qDebug() << "QWidget:"; //输出qdebug对应的字符串

  15. qDebug() << w.x();

  16. qDebug() << w.y();

  17. qDebug() << w.width();

  18. qDebug() << w.height();

  19.  
  20. qDebug() << "QWidget::geometry()";

  21. qDebug() << w.geometry().x();

  22. qDebug() << w.geometry().y();

  23. qDebug() << w.geometry().width();

  24. qDebug() << w.geometry().height();

  25.  
  26. qDebug() << "QWidget::frameGeometry()";

  27. qDebug() << w.frameGeometry().x();

  28. qDebug() << w.frameGeometry().y();

  29. qDebug() << w.frameGeometry().width();

  30. qDebug() << w.frameGeometry().height();

  31.  
  32. return a.exec();

  33. }

运行结果:

注: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>头文件

 
  1. #include "show.h"

  2. #include <QtWidgets/QApplication>

  3. #include <qdebug.h>

  4. #include <qpushbutton.h>

  5.  
  6. int main(int argc, char *argv[])

  7. {

  8. QApplication a(argc, argv);

  9. QWidget w; //生成QWidget对象,顶级组件

  10.  
  11.  
  12. QPushButton b(&w);//生成QPushButton对象,其父组件为QWidget

  13. b.setText("Button");//设置按键显示的字符串

  14. b.move(10, 10);//移动按钮图案到坐标(10,10)位置

  15. b.resize(100, 25);//设置按钮大小width = 10,height = 25

  16.  
  17. QPushButton b1(&w);//生成QPushButton对象,其父组件为QWidget

  18. b1.setText("Button1");//设置按键显示的字符串

  19. b1.move(140, 10);//移动按钮图案到坐标(10,10)位置

  20. b1.resize(100, 25);//设置按钮大小width = 10,height = 25

  21.  
  22. QPushButton b2(&w);//生成QPushButton对象,其父组件为QWidget

  23. b2.setText("Button2");//设置按键显示的字符串

  24. b2.move(10, 100);//移动按钮图案到坐标(10,10)位置

  25. b2.resize(100, 25);//设置按钮大小width = 10,height = 25

  26.  
  27.  
  28. w.show();//显示窗口,要先配置窗口内容信息,再显示窗口

  29. return a.exec();

  30. }

注:要注意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); //设置外观                 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值