QT开发(二十二)——QMainWindow主窗口
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了QT开发(二十二)——QMainWindow主窗口相关的知识,希望对你有一定的参考价值。
QT开发(二十二)——QMainWindow主窗口
一、主窗口简介
应用程序中的主窗口是与用户进行长时间交互的顶层窗口,提供了应用程序的大部分功能,通常是应用程序启动后的第一个窗口,应用程序一般由一个主窗口和多个对话框组成。
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);
本文出自 “生命不息,奋斗不止” 博客,谢绝转载!
以上是关于QT开发(二十二)——QMainWindow主窗口的主要内容,如果未能解决你的问题,请参考以下文章
Qt__主窗口菜单和工具条(QMainWindow,QMenu,QToolBar)