谢绝转载

一、主窗口简介

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主窗口相关推荐

  1. QT开发(十二)——QT事件处理机制

    一.QT事件简介 QT程序是事件驱动的, 程序的每个动作都是由内部某个事件所触发.QT事件的发生和处理成为程序运行的主线,存在于程序整个生命周期. 常见的QT事件类型如下: 键盘事件: 按键按下和松开 ...

  2. OpenCV学习笔记(二十一)——绘图函数core OpenCV学习笔记(二十二)——粒子滤波跟踪方法 OpenCV学习笔记(二十三)——OpenCV的GUI之凤凰涅槃Qt OpenCV学习笔记(二十

    OpenCV学习笔记(二十一)--绘图函数core 在图像中,我们经常想要在图像中做一些标识记号,这就需要绘图函数.OpenCV虽然没有太优秀的GUI,但在绘图方面还是做得很完整的.这里就介绍一下相关 ...

  3. qt设置顶层窗口_Python快速入门系列:PyQt5 快速开发GUI-窗口类型以及主窗口创建...

    QMainWindow, QWidget, QDialog三个类都是用来创建窗口的,可以直接使用或继承后再使用.QMainWindow窗口可以包含菜单栏.工具栏.状态栏.标题栏等,是最常见的窗口形式, ...

  4. 【Visual C++】游戏开发五十五 浅墨DirectX教程二十二 水乳交融的美学:alpha混合技术

    本系列文章由zhmxy555(毛星云)编写,转载请注明出处. 文章链接: http://blog.csdn.net/poem_qianmo/article/details/15026917 作者:毛星 ...

  5. Senparc.Weixin.MP SDK 微信公众平台开发教程(二十二):如何安装 Nuget(dll) 后使用项目源代码调试...

    最近碰到开发者问:我使用 nuget 安装了 Senparc.Weixin SDK,但是有一些已经封装好的过程想要调试,我又不想直接附加源代码项目,这样就没有办法同步更新了,我应该怎么办? 这其实是一 ...

  6. iOS 11开发教程(二十二)iOS11应用视图实现按钮的响应(2)

    iOS 11开发教程(二十二)iOS11应用视图实现按钮的响应(2) 此时,当用户轻拍按钮后,一个叫tapButton()的方法就会被触发. 注意:以上这一种方式是动作声明和关联一起进行的,还有一种先 ...

  7. 陈力:传智播客古代 珍宝币 泡泡龙游戏开发第十二讲:盒子的定位方式

    陈力:传智播客古代 珍宝币 泡泡龙游戏开发第十二讲:盒子的定位方式 摘要:通过前节<第十一讲:浮动>学习了贵阳网站建设中的DIV+CSS中盒子模型和浮动进行介绍.框模型是CSS的基础,本文 ...

  8. 数字音频总线A2B开发详解二十二:ADAU1701做的功放板的音效(26个例程)(第二部分)

    六. A2B-ADAU1701音效开发:直通分频 混音讲完了,我们再来说说分频,同一个音源,如何才能同时推送到S板的2个黑色输出口来播放音乐呢? 先做S板的Sigma工程,最简单的分频输出,就是用T: ...

  9. Qt实现基本QMainWindow主窗口程序

    这个实验用Qt实现基本QMainWindow主窗口 先上实验效果图    打开一个文件,读取文件类容 详细步骤: 1.打开Qt creator新建MainWindow工程 右键工程名添加新文件,mai ...

  10. Android开发笔记(一百二十二)循环器视图RecyclerView

    RecyclerView RecyclerView是Android在support-v7库中新推出控件,中文别名为循环器视图,它的功能非常强大,可分别实现ListView.GridView,以及瀑布流 ...

最新文章

  1. 如何保证数据库服务器的安全性
  2. 批量正则替换某文件夹中代码(div id=XXXX替换为div id=XXXX)
  3. anaconda下载jupyter写python_如何安装Anaconda3和使用Jupyter
  4. 并发容器(J.U.C)中的集合类
  5. poj1019(打表预处理+数学)
  6. 【java虚拟机序列】java中的垃圾回收与内存分配策略
  7. c语言页面置换算法报告,C语言实现页面置换算法
  8. excel转置怎么操作_excel怎么做日历?使用Excel制作日历的操作方法
  9. A002-186-2619-林斌锐
  10. Android 圆角布局 shape.xml的使用
  11. java识别照片是彩色还是黑白照
  12. http免费代理-2020-04-07
  13. Python制作背单词exe
  14. photon 服务器操作系统,PhotonServer游戏服务器端教程
  15. 计算机视觉 | 八斗人工智能 (中)
  16. python入门——python基础语法
  17. 5G FWA市场一跃而上,四信多款5G终端赋能FWA典型应用
  18. Vue基于python的用户兴趣的电影视频播放推荐系统django
  19. paypal轮询系统如何降低风控提高收款率
  20. 个人官网导航主页API网站源码

热门文章

  1. java反序列化漏洞分析
  2. 直方图均衡化、规定化、局部直方图、直方图统计
  3. SSS1630规格书|SSS1630中文设计方案|USB音频解码方案
  4. 网络协议分析(最全)
  5. 总谐波失真80_总谐波失真怎么计算啊
  6. dp 这个单位是安卓发明的么?为什么 px=dp*(dpi/160)?
  7. 计算机考研专硕好考还是学硕好考,考研是学硕难考还是专硕难考?很多人都猜错了...
  8. 爬虫基础_urllib
  9. System.Data.OleDb.OleDbException错误
  10. windows10安装pyltp