应用程序中的主窗口是与用户进行长时间交互的顶层窗口,提供了应用程序的大部分功能,一般是应用程序启动后的第一个窗口,应用程序通常由一个主窗口和多个对话框组成。编辑器
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);