Qt学习之QMainWindow的使用(使用菜单栏、工具栏、状态栏等设计一个文本编辑器界面)源码及效果图 |
您所在的位置:网站首页 › 状态栏包括什么的按钮区两个部分 › Qt学习之QMainWindow的使用(使用菜单栏、工具栏、状态栏等设计一个文本编辑器界面)源码及效果图 |
目录 QMainWindow简介 各个部件的使用以及代码实现 菜单栏的使用(QMenuBar) 创建一个菜单栏并添加到主窗口中 创建多个菜单并添加到菜单栏中 创建菜单项并添加到菜单中 菜单项添加快捷键并连接信号槽 实现效果 工具栏的使用(QToolBar) 创建工具栏并添加到主窗口中 创建工具项并添加到工具栏里 实现效果 状态栏的使用(QStatusBar) 状态栏使用简介 创建状态栏并添加到主窗口中 状态栏添加永久信息以及临时信息 实现效果 铆接部件的使用(QDockWidget) 铆接部件使用简介 创建铆接部件并添加到主窗口中 铆接部件特征(Features)设置 铆接部件停靠区域设置 铆接部件添加内容主体 实现效果 中心部件的设置(以文本编辑QTextEdit为例) 创建文本编辑框并设置成中心部件 实现效果(总体) QMainWindow简介QMainWindow是一个为用户提供主窗口程序的类,包含一个菜单栏(menu bar)、多个工具栏(tool bars ) 、多个铆接部件( dock widgets ) 、一个状态栏( status bar ) 及一个中心部件 ( central widget),是许多应用程序的基础,如文本编辑器,图片编辑器等。 下图为QMainWindow的结构示意图 下文为设计如下界面的一一实现,只是简单的界面设计,后续可以逐步完善,界面继承于QMainWindow。 各个部件的使用以及代码实现 菜单栏的使用(QMenuBar)一个QMainWindow主窗口最多只有一个菜单栏,位于主窗口顶部,主窗口标题栏下面。一个菜单栏可以包含多个菜单,每个菜单可以包含多个菜单项以及二级三级菜单等多级菜单。 创建一个菜单栏并添加到主窗口中 this->setWindowTitle("myWindow");//设置窗口标题 this->resize(1100,700);//重设窗口大小 //创建菜单栏 QMenuBar *menuBar = new QMenuBar(this); //添加菜单栏到主窗口中 this->setMenuBar(menuBar); 创建多个菜单并添加到菜单栏中 //创建菜单 QMenu *menu1 = new QMenu("文件",this); QMenu *menu2 = new QMenu("编辑",this); QMenu *menu3 = new QMenu("构建",this); QMenu *menu4 = new QMenu("调试",this); QMenu *menu5 = new QMenu("Analyze",this); QMenu *menu6 = new QMenu("工具",this); QMenu *menu7 = new QMenu("控件",this); QMenu *menu8 = new QMenu("帮助",this); //菜单栏添加菜单 menuBar->addMenu(menu1); menuBar->addMenu(menu2); menuBar->addMenu(menu3); menuBar->addMenu(menu4); menuBar->addMenu(menu5); menuBar->addMenu(menu6); menuBar->addMenu(menu7); menuBar->addMenu(menu8); 创建菜单项并添加到菜单中菜单项可以创建多个,可以有图标也可以不带图标,菜单可以通过addSeparator()函数给菜单项添加分割线。 //创建菜单项 QAction *action1 = new QAction(QIcon("image/createFile.png"),"新建文件或项目",this);//有图标 QAction *action2 = new QAction(QIcon("image/openFile.png"),"打开文件或项目",this);//有图标 QAction *action3 = new QAction("退出",this); //菜单添加菜单项 menu1->addAction(action1); menu1->addAction(action2); menu1->addSeparator();//插入分割线 QMenu *menu9 = new QMenu("最近访问的文件",this); menu1->addMenu(menu9);//添加二级菜单 menu9->addAction(new QAction("暂无最近打开项目",this));//二级菜单添加菜单项 menu1->addAction(action3); 菜单项添加快捷键并连接信号槽QAction可以通过setShortcut()函数添加快捷键,信号槽可以自行实现。 //菜单项添加快捷键 action1->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_N));//快捷键ctrl+N action2->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_O));//快捷键ctrl+O connect(action1, SIGNAL(triggered(bool)), this, SLOT(createFile()));//连接信号槽 实现效果 工具栏的使用(QToolBar) 创建工具栏并添加到主窗口中主窗口添加工具栏并设置工具栏默认停靠在左边,不允许浮动,不允许移动,设置工具项为图片在文字上方。 //创建工具栏 QToolBar *toolBar = new QToolBar(this); //主窗口添加工具栏 this->addToolBar(Qt::LeftToolBarArea,toolBar);//设置工具栏默认停靠在左边 toolBar->setFloatable(false);//设置不允许浮动 toolBar->setMovable(false);//设置不允许移动 toolBar->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);//设置工具项为图片在文字上方 创建工具项并添加到工具栏里可以在工具项之间添加分割线。 //创建工具项 QAction *action4 = new QAction(QIcon("image/welcome.png"),"欢迎",this); QAction *action5 = new QAction(QIcon("image/edit.png"),"编辑",this); QAction *action6 = new QAction(QIcon("image/design.png"),"设计",this); action6->setEnabled(false);//设置不能使用 //工具栏添加工具项 toolBar->addAction(action4); toolBar->addAction(action5); toolBar->addSeparator();//添加分割线 toolBar->addAction(action6); 实现效果 状态栏的使用(QStatusBar) 状态栏使用简介状态栏显示信息的类型一般分为3种 1、普通信息,可以用QLabel做载体。 void addWidget(QWidget *widget, int stretch = 0); 2、永久信息,文本会一直显示在状态栏的最右边。 void addPermanentWidget(QWidget *widget, int stretch = 0); 3、临时的信息,指定信息显示多久,时间一到信息消失,毫秒为单位,1000为一秒。 void showMessage(const QString &text, int timeout = 0); 创建状态栏并添加到主窗口中 //创建状态栏 QStatusBar *status = new QStatusBar(this); status->setObjectName("状态栏"); status->setStyleSheet("QStatusBar::item{border: 0px}"); //设置不显示label的边框 //主窗口添加状态栏 this->setStatusBar(status); 状态栏添加永久信息以及临时信息 //创建标签 QLabel *statusLabel = new QLabel("我是状态栏", this); //状态栏添加信息 status->showMessage("我在3秒后会消失", 3000);//显示在左侧,并且3秒后自动消失 status->addPermanentWidget(statusLabel);//添加右侧标签(永久性) 实现效果 铆接部件的使用(QDockWidget) 铆接部件使用简介QDockWidget提供了铆接(停靠)控件的概念,也叫做工具窗口。铆接窗口是QMainWindow中心控件的辅助窗口,停放在QMainWindow的铆接区域。 铆接部件由标题栏和内容主体组成,标题栏显示铆接部件的窗口标题。 创建铆接部件并添加到主窗口中设置铆接部件停靠在左侧且不可移动、不可关闭、不可浮动,并设置标题栏。 //创建铆接部件 QDockWidget *dockWidget = new QDockWidget(this); dockWidget->setFeatures(QDockWidget::NoDockWidgetFeatures);//设置铆接部件不可移动、不可关闭、不可浮动 dockWidget->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);//设置允许左右停靠 QLabel *titleLabel = new QLabel("铆接"); titleLabel->setAlignment(Qt::AlignCenter);//设置中心对齐 dockWidget->setTitleBarWidget(titleLabel);//设置标题栏 //主窗口添加铆接部件 this->addDockWidget(Qt::LeftDockWidgetArea,dockWidget);//设置铆接部件停靠在左侧 铆接部件特征(Features)设置以下函数可以设置铆接部件是否可移动、可关闭、可浮动,默认情况下三种行为都允许。 void setFeatures(DockWidgetFeatures features); 各种参数如下表所示 DockWidgetFeaturesdescribeDockWidgetClosable可关闭DockWidgetMovable可移动DockWidgetFloatable可浮动DockWidgetVerticalTitleBar左侧显示垂直标题栏AllDockWidgetFeatures可移动、可关闭、可浮动NoDockWidgetFeatures不可移动、不可关闭、不可浮动 铆接部件停靠区域设置以下函数可以设置铆接部件的停靠区域,默认情况下允许停靠在任何区域。 void setAllowedAreas(Qt::DockWidgetAreas areas); 各种参数如下表所示 Qt::DockWidgetAreasdescribeQt::LeftDockWidgetArea允许停靠在左侧Qt::RightDockWidgetArea允许停靠在右侧Qt::TopDockWidgetArea允许停靠在顶部Qt::BottomDockWidgetArea允许停靠在底部Qt::AllDockWidgetAreas允许停靠在所有位置Qt::NoDockWidgetArea不允许停靠 铆接部件添加内容主体 //创建ListWidget QListWidget *textList = new QListWidget(this); for(int i=1; iaddItem(item); item->setTextAlignment(Qt::AlignRight); } textList->setFixedWidth(50); textList->setObjectName("文本列表"); //设置没有水平以及垂直滑动条 textList->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); textList->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); //铆接部件添加内容主体 dockWidget->setWidget(textList); 实现效果 中心部件的设置(以文本编辑QTextEdit为例) 创建文本编辑框并设置成中心部件 //设置中心部件 //创建文本编辑框 显示文本 QTextEdit *textEdit = new QTextEdit(this); textEdit->setText("我是文本编辑框"); textEdit->setObjectName("文本编辑框"); connect(textEdit, SIGNAL(textChanged()), this, SLOT(createFile()));//连接信号槽 //主窗口设置文本编辑框为中心部件 this->setCentralWidget(textEdit); 实现效果(总体)文本编辑框内的文字为后期手动粘贴上去。 原创不易,转载请标明出处。 |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |