應用程序中的主窗口是與用戶進行長時間交互的頂層窗口,提供了應用程序的大部分功能,一般是應用程序啓動後的第一個窗口,應用程序通常由一個主窗口和多個對話框組成。編輯器
QT中直接支持主窗口,QMainWindow是QT中主窗口的基類,是繼承於QWidget類的容器型組件。ide
QMainWindow內部封裝了菜單欄、工具欄、中心組件、停靠組件、狀態欄等。
函數
QMainWindow內置了佈局管理器,基本的組件佈局以下:工具
QT中提供了預約義的與菜單相關的類組件,菜單欄QMenuBar,下拉菜單QMenu,菜單項QAction。佈局
QMenuBar* mb = menuBar();this
QMenu* menu = new QMenu("File(&F)");spa
QAction *action = new QAction(text, NULL);設計
menu->addAction(action);blog
mb->addMenu(menu);繼承
快捷鍵設置
action->setShortcut(QKeySequence(KEY));
QKeySequence是QT中與快捷鍵相關的類,KEY是QT中表明鍵值的常量。
工具欄是應用程序中集成各類功能使用快捷方式的區域,不是應用程序必須存在的組件,工具欄的元素能夠是各類窗口組件,但一般以圖標按鈕的方式存在。
QT中提供了預約義的工具欄相關組件,工具欄QToolBar和快捷項QAction。
//建立工具欄
QToolBar *tb = addToolBar("ToolBar");
//建立工具欄選項
QAction *action = new QAction("", NULL);
action->setToolTip(「Open」);
action->setIcon(QIcon(「/res/pic/open.png」));
//將工具欄選項加入工具欄
tb->addAction(action);
void setFloatable(bool floatable) 設置工具欄爲浮動
void setMovable(bool movable) 設置工具欄爲可移動
void setIconSize(const QSize & iconSize) 設置工具欄的圖標大小
QTollBar組件中能夠加入QT中的任意QWidget組件。
QToolBar* tb = addToolBar("Tool Bar");
QAction* action = new QAction("", NULL);
tb->setFloatable(false);
tb->setMovable(false);
action->setToolTip("Open");
action->setIcon(QIcon(":/Res/open.png"));
tb->addAction(action);
QPushButton* b = new QPushButton("Button");
QLabel* l = new QLabel("Label");
QLineEdit* e = new QLineEdit();
tb->addWidget(b);
tb->addWidget(l);
tb->addWidget(e);
狀態欄是應用程序中輸出簡要信息的區域,通常位於窗口的底部。狀態欄顯示的消息類型以下:
A、實時消息,如當前程序狀態
B、永久消息,如程序版本,開發機構
C、進度消息,進度顯示
QT中提供了預約義的狀態欄相關組件狀態欄QStatusBar,QStatusBar是容器型組件,能夠是任意組件QWidget的父組件。
QT狀態欄的通常設計原則:
A、狀態欄左邊區域用於輸出實時消息
B、狀態欄右邊區域用於輸出永久消息
所以,addWidget函數用於在狀態欄左邊區域添加組件,addPermanentWidget函數用於在狀態欄右邊區域添加組件。
狀態欄使用方法以下:
QStatusBar* sb = statusBar();
QLabel* label = new QLabel("CopyRight @ Scorpio Studio 2016");
if( label != NULL )
{
line.setMinimumWidth(120);
line.setAlignment(Qt::AlignCenter);
line.setText("Ln: 1 Col: 1");
label->setMinimumWidth(160);
label->setAlignment(Qt::AlignCenter);
sb->addPermanentWidget(new QLabel());
sb->addPermanentWidget(&line);
sb->addPermanentWidget(label);
}
QT中預約義了三種文本編輯組件,用於知足不一樣的開發需求。
A、QLineEdit單行文本編輯組件
B、QTextEdit多行富文本編輯組件
C、QPlainTextEdit多行普通文本編輯組件
QT文本編輯組件的類繼承圖:
QT中的文本編輯組件內置了右鍵彈出和快捷鍵功能。
文本編輯器的使用:
//設置文本編輯器的父組件
mainEditor.setParent(this);
//設置文本編輯器爲中央組件
setCentralWidget(&mainEditor);