一、主窗口簡介
應用程序中的主窗口是與用戶進行長時間交互的頂層窗口,提供了應用程序的大部分功能,通常是應用程序啟動後的第一個窗口,應用程序一般由一個主窗口和多個對話框組成。
QT中直接支持主窗口,QMainWindow是QT中主窗口的基類,是繼承於QWidget類的容器型組件。
QMainWindow內部封裝了菜單欄、工具欄、中心組件、停靠組件、狀態欄等。
QMainWindow內置了佈局管理器,基本的組件佈局如下:
二、菜單欄
QT中提供了預定義的與菜單相關的類組件,菜單欄QMenuBar,下拉菜單QMenu,菜單項QAction。
QMenuBar* mb = menuBar();
QMenu* menu = new QMenu("File(&F)");
QAction *action = new QAction(text, NULL);
menu->addAction(action);
mb->addMenu(menu);
快捷鍵設置
action->setShortcut(QKeySequence(KEY));
QKeySequence是QT中與快捷鍵相關的類,KEY是QT中代表鍵值的常量。
三、工具欄
工具欄是應用程序中集成各種功能使用快捷方式的區域,不是應用程序必須存在的組件,工具欄的元素可以是各種窗口組件,但通常以圖標按鈕的方式存在。
QT中提供了預定義的工具欄相關組件,工具欄QToolBar和快捷項QAction。
1、工具欄使用方法
//創建工具欄
QToolBar *tb = addToolBar("ToolBar");
//創建工具欄選項
QAction *action = new QAction("", NULL);
action->setToolTip(“Open”);
action->setIcon(QIcon(“/res/pic/open.png”));
//將工具欄選項加入工具欄
tb->addAction(action);
2、QToolBar實用函數
void setFloatable(bool floatable) 設置工具欄為浮動
void setMovable(bool movable) 設置工具欄為可移動
void setIconSize(const QSize & iconSize) 設置工具欄的圖標大小
3、工具欄實例
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);