QT学习第七课:QT系统中的坐标

  声明:此文章仅是个人在学习狄泰QT课程所做的笔记,文章中包含狄泰资料的,一切版权归狄泰软件所有! 

 

 一、坐标系统

    1.1GUI操作系统都有特定的坐标系统

    1.2图形界面程序在坐标系统中进行窗口和部件的定位

        1.3定位的类型:

      1.3.1顶级窗口部件的定位

      1.3.2窗口内部件的定位

      1.3.3窗口部件的大小设置

    

    1.4QT使用统一的坐标系统定位窗口部件的位置和大小

    1.5QT部件提供成员函数在坐标系统中进行定位

    1.6QWidget类提供了窗口部件所需要的坐标系统成员函数

 

  二、QWidget类中的坐标系统成员函数

      x.()

      y.()

      width()

      height()

      

      geometry()类中也包括上述成员函数

        x.(),y(),width(),height()

      frameGeometry()

        x.(),y(),whidth(),height()

      那三者有什么关系呢?请看下图。

         

    QWidget中的x.(),y.()和frameGeometry()的x.(),y.()获取的内容是一样的,都是获取界面包括标题栏顶最左上角的x和y轴坐标。QWidget中的width()和height()获取到的信息和geomatry中的width()、height()获取的信息完全一样。

 

    geomatry中的x.(),y.()获取的坐标是不包括标题栏最左上角位置(在此叫用户区),同样geometry()中的width()和height()获取的也是用户区中的宽度和高度。归根结底是用于获取用户区域的坐标信息。

     

    frameGeometry()中的width(),height()获取的是界面包括标题栏边框的宽度和高度。

 

    注意:在调用以上函数的时候特别要注意:geometry()和frameGeometry()中的数据,必须在show()调用后才有效。如果是在之前调用的则返回的数据是没有意义的!

     示例1:

 1 #include "MainWin.h"
 2 #include <QDebug>
 3 #include <QApplication>
 4 
 5 int main(int argc, char *argv[])
 6 {
 7     QApplication a(argc, argv);
 8     Widget w;
 9     w.show();
10 
11     qDebug() << "------------------------------------------------";
12     qDebug() << "打印QWidget:x.()值 = " << w.x();
13     qDebug() << "打印QWidget:y.()值 = " << w.y();
14     qDebug() << "打印QWidget:width.()值 = " << w.width();
15     qDebug() << "打印QWidget:height.()值 = " << w.height();
16     qDebug() << "------------------------------------------------";
17 
18     qDebug() << "------------------------------------------------";
19     qDebug() << "打印QWidget:geometry().x.()值 = " << w.geometry().x();
20     qDebug() << "打印QWidget:geometry().y.()值 = " << w.geometry().y();
21     qDebug() << "打印QWidget:geometry().width.()值 = " << w.geometry().width();
22     qDebug() << "打印QWidget:geometry().height.()值 = " << w.geometry().height();
23     qDebug() << "------------------------------------------------";
24 
25 
26     qDebug() << "------------------------------------------------";
27     qDebug() << "打印QWidget:frameGeometry().x.()值 = " << w.frameGeometry().x();
28     qDebug() << "打印QWidget:frameGeometry().y.()值 = " << w.frameGeometry().y();
29     qDebug() << "打印QWidget:frameGeometry().width.()值 = " << w.frameGeometry().width();
30     qDebug() << "打印QWidget:frameGeometry().height.()值 = " << w.frameGeometry().height();
31     qDebug() << "------------------------------------------------";
32 
33 
34     return a.exec();
35 }

  打印效果:

  

------------------------------------------------
打印QWidget:x.()值 =  752
打印QWidget:y.()值 =  340
打印QWidget:width.()值 =  400
打印QWidget:height.()值 =  300
------------------------------------------------
------------------------------------------------
打印QWidget:geometry().x.()值 =  760
打印QWidget:geometry().y.()值 =  370
打印QWidget:geometry().width.()值 =  400
打印QWidget:geometry().height.()值 =  300
------------------------------------------------
------------------------------------------------
打印QWidget:frameGeometry().x.()值 =  752
打印QWidget:frameGeometry().y.()值 =  340
打印QWidget:frameGeometry().width.()值 =  416
打印QWidget:frameGeometry().height.()值 =  338
------------------------------------------------

  三、QT窗口部件的大小设置

    3.1QWidget类提代了成员函数:

      -更改窗口部件的大小

        void resize(int w, int h)

        void (const QSize&)

      -更改窗口部件的位置

        void move(int x, int y)

        void move(const QPoint&)

    

  四、QpushButton组件

    4.1QPushButton:用于接受用户点击事件

    4.2QPushButton:能够显示提示性字符串

    4.3QPushButton:是功能性组件,需要父组件作为容器

    4.4QPushButton:是能够在父组件中进行定位

    

    示例:

    

1 Qwidget w;         //生成QWidget对象,顶级组件
2 QPushButton b(&w);     //生成QPushButton对象,其父组件为QWidget
3 b.setText("Button");    //设置显示的字符串
4 b.move(10, 10);       //移动到坐标10,10
5 b.resize(100, 25);     //设置大小width=100,height=25

  

    示例2:

 1 #include "MainWindow.h"
 2 #include <QApplication>
 3 #include <QPushButton>
 4 #include <QDebug>
 5 
 6 
 7 int main(int argc, char *argv[])
 8 {
 9     QApplication a(argc, argv);
10     Widget w;
11 
12 
13     QPushButton b1(&w);
14     QPushButton b2(&w);
15 
16     b1.setText("第1按键");    //设置显示的字符串
17     b1.move(10, 10);         //移动按键到坐标10.10
18     b1.resize(100,30);       //设置按键大小
19 
20     b2.setText("第2按键");
21     b2.move(200,10);
22     b2.resize(100,30);
23 
24     w.resize(350, 300);     //如果此处的小大小于系统设定的最小值,将以系统的为准
25     w.move(200, 200);
26 
27 
28     w.show();
29     return a.exec();
30 }

 

     显示效果图:

    

 

    小结:

    QT中几何坐标 以左上角为原点

    -水平为x轴,从左向右为正向

    -垂直为y轴,从上到下为正向

    QT中的GUI组件以左上角进行定位

    QT中的GUI组件可以在坐标系统中进行大小设置

posted @ 2017-03-26 13:05  清风明月2018  阅读(2700)  评论(0编辑  收藏  举报