窗口與座標系統【Qt教程】

目錄

1、窗口部件及窗口類型

1、窗口組件 

2、QWidget組件

3、QLabel組件 

4、窗口類型 

5、小結 

2、QT中的座標系統

1、座標系統 

2、座標系統相關的成員函數 

3、QPushButton組件 

4、窗口部件的大小設置 

5、小結 


1、窗口部件及窗口類型


1、窗口組件 

圖形用戶界面由不同的窗口窗口組件構成 

<QtGui>頭文件包含窗口組件,對應Qt中的GUI模塊 

Qt以組件對象的方式構建圖形用戶界面 

組件的類型: 

               -容器類(父組件):用於包含其它的界面組件 

               -功能類(子組件):用於實現特定的交互功能 

Qt中沒有父組件的頂級組件叫做窗口 

            

2、QWidget組件

QWidget類繼承自QObject類和QPaintDevice類 

                - QObject是所有支持Qt對象模型的基類 

                - QPaintDevice是Qt中所有可繪製組件的基類 

        

QWidget能夠繪製自己處理用戶的輸入 

QWidget是Qt中所有窗口組件類的父類(super class

QWidget是所有窗口組件的抽象 

Qt中的每個窗口組件都是一個QWidget 

QWidget類對象常作爲父組件頂級組件使用 

 

編程實驗 

QWidget初探

Qt中沒有父組件的頂級組件叫做窗口 

3、QLabel組件 

QLabel用於顯示一個提示性的字符串 

QLabel是功能性組件,一般需要父組件作爲容器 

QLabel可以作爲窗口存在,但沒什麼意義 

   

編程實驗 

QLabel組件的使用 

 

4、窗口類型 

Qt中可以根據需要定製窗口式樣 

            -窗口類型 

                    • Qt::Dialog-對話框類型 

                    • Qt::Window-主窗口類型 

                    • Qt::SplashScreen -啓動畫面類型 

                    • ......

            -窗口標誌 

                    • Qt::WindowStaysOnTopHint 

                    • Qt::WindowContextHelpButtonHint 

        更多可以查閱

編程實驗 

窗口類型與窗口標誌 

先看一下QWidget的構造函數

1)

        

2)

        

                    對話框與窗口是不同的,對話框是特別的窗口

 

3)

        

5、小結 

            Qt以組件對象的方式構建圖形用戶界面 

            QWidget類是所有用戶界面組件的父類 

            QWidget類對象常作爲父組件或頂級組件使用 

            Qt中可以根據需要定製窗口式樣 

            QLabel用於顯示一個提示性的字符串 

2、QT中的座標系統


1、座標系統 

GUI操作系統都有特定的座標系統 

圖形界面程序在座標系統中進行窗口和部件的定位 

定位類型 

               -頂級窗口部件的定位 

               -窗口內部件的定位 

               -窗口部件的大小設置 

Qt使用統一的座標系統定位窗口部件的位置和大小 

Qt部件類提供成員函數在座標系統中進行定位 

QWidget類提供了窗口部件所需的座標系統成員函數 

        

2、座標系統相關的成員函數 

QWidget類中的座標系統成員函數 

             - x()、y()

             - width()、height()

             - geometry()

                   • x()、• y()、• width()、• height()

             - frameGeometry()

                   • x()、 • y()、 • width()、 • height()

            

                    爲什麼Qt在座標系統相關的函數裏要提供三組不同的函數出來?

                            跨平臺,不同平臺窗口外觀式樣不一樣

編程實驗 

Qt座標系統初探 

#include <QtGui/QApplication>
#include <QDebug>

#include "MainWindow.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();

    qDebug()<<"QWidget:";
    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()調用後纔有效!!!

3、QPushButton組件 

QPushButton用於接受用戶點擊事件 

QPushButton能夠顯示提示性字符串 

QPushButton是功能性組件,需要父組件作爲容器 

QPushButton能夠在父組件中進行定位

    

4、窗口部件的大小設置 

QWidget類提供了成員函數: 

             -改編窗口部件的大小 (有限度)

          void resize (int w, int h) 

          void resize (const QSize &) 

             -改編窗口部件的位置 

          void move (int x, int y) 

          void move (const QPoint &) 

編程實驗 

窗口子組件的大小和位置 

#include <QtGui/QApplication>
#include <QPushButton>
#include <QDebug>

#include "MainWindow.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    QPushButton b(&w);

    b.setText("Button");
    b.resize(100,25);
    b.move(60,80);


    w.resize(300,330);
    w.move(220,330);
    w.show();

    qDebug()<<"QWidget:";
    qDebug()<<w.x();
    qDebug()<<w.y();
    qDebug()<<w.width();
    qDebug()<<w.height();

    return a.exec();
}

                            

5、小結 

Qt中的幾何座標以左上角爲原點

                -水平爲x軸,從左向右爲正向 

                -垂直爲y軸,從上到下爲正向 

Qt中的GUI組件以左上角進行定位 

Qt中的GUI組件可以在座標系統中進行大小設置 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章