QT開發(二十二)——QMainWindow主窗口

Qt 設計 cpp軟件架構獅 2019-04-07

一、主窗口簡介

應用程序中的主窗口是與用戶進行長時間交互的頂層窗口,提供了應用程序的大部分功能,通常是應用程序啟動後的第一個窗口,應用程序一般由一個主窗口和多個對話框組成。

QT中直接支持主窗口,QMainWindow是QT中主窗口的基類,是繼承於QWidget類的容器型組件。

QMainWindow內部封裝了菜單欄、工具欄、中心組件、停靠組件、狀態欄等。

QMainWindow內置了佈局管理器,基本的組件佈局如下:

二、菜單欄

QT中提供了預定義的與菜單相關的類組件,菜單欄QMenuBar,下拉菜單QMenu,菜單項QAction。

QT開發(二十二)——QMainWindow主窗口

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開發(二十二)——QMainWindow主窗口

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開發(二十二)——QMainWindow主窗口

QT中的文本編輯組件內置了右鍵彈出和快捷鍵功能。

文本編輯器的使用:

//設置文本編輯器的父組件

mainEditor.setParent(this);

//設置文本編輯器為中央組件

setCentralWidget(&mainEditor);

相關推薦

推薦中...