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組件可以在坐標系統中進行大小設置


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM