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