【QT】窗口|菜单栏|菜单项|工具栏|状态栏|浮动窗口

目录

​编辑

QT窗口

窗口分类 

菜单栏

创建菜单栏,菜单,菜单项

菜单栏 

菜单

菜单项

添加分割线

 添加槽函数

​编辑

 添加快捷键 

工具栏 

停靠位置 

浮动属性

移动属性

添加快捷项

​编辑

状态栏

​编辑

添加标签

添加进度表

 ​编辑

 浮动窗口

​编辑 添加元素

​编辑

​编辑


QT窗口

通过QMainWindow类来实现,是一个提供主窗口程序的类

:包含一个菜单栏(menu bar),多个工具栏(tool bars),多个浮动窗口(dock widgets),一个状态栏(status bar)和一个中心部件(central widget)

窗口分类 

主窗口(QMainWindow)、对话框(QDialog)或者是一般的窗口部件(QWidget

  • QMainWindow(主窗口):这是QT中最常见的窗口类型,具有菜单栏、工具栏、状态栏和中心区域;
  • QDialog(对话框) :用于创建对话框窗口,常用于提示用户输入信息、显示警告或确认操作等场景。
  • QWidget(窗口部件):是最基础的用户界面对象,所有可视部件都继承自它。 

 

菜单栏

 Qt的菜单栏是通过QMenuBar来实现的,一个主窗口最多只有一个菜单栏,位于主窗口顶部,主窗口标题下的位置;

菜单栏里面包含了菜单,和菜单项;

创建菜单栏,菜单,菜单项

QMainWindow类本身提供了QMenuBar() (我们创建项目时如果勾选了.ui文件的自动创建),我们不需要在堆上new创建,而且这一方式也会造成本身携带的造成内存泄露:(因为,当我们自己new了挂到树上后,原来的就会脱离对象树,没有对其释放内存。)

 ​​​​​​

菜单栏 

MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);//利用本身存在menubar 创建菜单栏//1.如果 QMenuBar 已经存在,直接获取并返回//2.如果 QMenuBar 不存在,就先创建一个新的,再返回QMenuBar* menuBar = this->menuBar();// QMenuBar* menuBar = new QMenuBar();//将其设置到窗口上this->setMenuBar(menuBar);   //如果是获取到已经存在 QMenuBar ,这里的设置就是自己替换自己,仍然在对象树上
}

菜单

创建菜单后,通过QMenuBar的方法 addMenu(QMenu* menu)方法添加菜单到菜单项中;

     //创建菜单 通过addMenu添加到菜单栏中QMenu* menu1 = new QMenu("文件");QMenu* menu2 = new QMenu("编辑");QMenu* menu3 = new QMenu("保存");//将菜单添加到菜单中menuBar->addMenu(menu1);menuBar->addMenu(menu2);menuBar->addMenu(menu3);

菜单项

每个菜单项被点击时,触发信号QAction::triggred ;

利用该信号槽,来设置需要的行为;

    //创建菜单项QAction* act1 = new QAction("open");QAction* act2 = new QAction("close");QAction* act3 = new QAction("create");//将菜单项添加到菜单上menu1->addAction(act1);menu1->addAction(act2);menu1->addAction(act3);

添加分割线

在菜单项之间添加分割线,QMenu提供的addSeparator(); 

 添加槽函数

 在菜单项被点击的时候,会触发 triggered 这个信号;

 添加快捷键 

只需要在创建菜单项的时候,菜单项的名字后面加个(&+添加的快捷键即可)

    //创建菜单 通过addMenu添加到菜单栏中QMenu* menu1 = new QMenu("文件(&F)");QMenu* menu2 = new QMenu("编辑(&E)");QMenu* menu3 = new QMenu("保存&S");//将菜单添加到菜单中menuBar->addMenu(menu1);menuBar->addMenu(menu2);menuBar->addMenu(menu3);

 

ALT + 快捷键 触发快捷键 

工具栏 

工具栏是一个集成各种功能实现快捷方式使用的区域,可以有多个或没有。是一个可移动组件,通常以图标按钮形式存在;

停靠位置 

QToolBar类提供的setAllowedAreas()函数来设置状态栏的停靠位置。

在创建工具栏的同时,也可以设置工具栏的位置,默认位置是在窗口的最上面;

其中也可以设置的位置包括:

  • Qt::LeftToolBarArea停靠在左侧
  • Qt::RightToolBarArea停靠在右侧
  • Qt::TopToolBarArea停靠在顶部
  • Qt::BottomToolBarArea 停靠在底部
  • Qt::AllToolBarAreas 以上四个位置都可停靠

MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);//创建工具栏QToolBar* toolbar1 = new QToolBar(this);QToolBar* toolbar2 = new QToolBar(this);//设置工具栏的停靠位置    this->addToolBar(Qt::LeftToolBarArea,toolbar1);this->addToolBar(Qt::RightToolBarArea,toolbar2);
}

浮动属性

工具栏的浮动属性可以通过QToolBar类提供的setFloatable()函数来设置,

函数原型void setFloatable(bool floatable); 

    //设置浮动属性toolbar1->setFloatable(true);toolbar2->setFloatable(false);

移动属性

 设置工具栏的移动属性可以通过QToolBar类提供的setMovable()函数来设置;

函数原型void setMovable(bool movable);

    //设置移动属性toolbar1->setMovable(false);toolbar2->setMovable(true);

添加快捷项

    QAction* act1 = new QAction("open",this);QAction* act2 = new QAction("close",this);//添加到工具栏中toolbar1->addAction(act1);//添加分割线toolbar1->addSeparator();toolbar1->addAction(act2);

状态栏

状态栏是一个输出简要信息的区域,一般位于主窗口底部,一个窗口只能有一个状态栏;

状态栏通过QStatusBar类来实现,一般可显示的信息类型:

  • 实时消息:当前程序状态;
  • 永久消息:程序版本号;
  • 进度消息:进度条显示,百分形式提示

添加标签

MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);//创建状态栏//    QStatusBar* stbar = new QStatusBar();QStatusBar* stbar = this->statusBar();//设置于窗口中this->setStatusBar(stbar);//添加一段实时消息到状态栏中,持续时间为2sstbar->showMessage("我是状态栏",2000);
}

当然,也可以添加其它widget空间,来达到"永久消息"的效果,比如添加label标签

    QLabel* label = new QLabel("我是标签",stbar);//将标签放入状态栏中stbar->addWidget(label);

添加进度表

        //添加一个进度widgetQProgressBar* progressbar = new QProgressBar(stbar);//设置范围和初始值progressbar->setRange(0,100);progressbar->setValue(25);//添加到状态栏中stbar->addWidget(progressbar);

 

 浮动窗口

浮动窗口时通过QDockWidget类来实现浮动功能,可以有多个

 

MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);//添加浮动窗口QDockWidget* dockWidget = new QDockWidget("浮动窗口",this);//添加浮动窗口到当前主窗口中     在底部this->addDockWidget(Qt::BottomDockWidgetArea,dockWidget);}

 添加元素

要想给浮动窗口内部添加一些控件,需要创建一个单独的 QWidget ,把要添加的控件加入到 QWidget 中,然后再把这个 QWidget 设置到 dockWidget 中。

MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);//添加浮动窗口QDockWidget* dockWidget = new QDockWidget("浮动窗口",this);//添加浮动窗口到当前主窗口中     设置在底部this->addDockWidget(Qt::BottomDockWidgetArea,dockWidget);//创建一个 QWidget ,并加入到 dockWidget 中QWidget* container = new QWidget();dockWidget->setWidget(container);//创建一个标签和一个垂直的布局管理器,把布局管理器加入到 Qwidget 中//再把控件加入到布局管理器中QLabel* label = new QLabel("这是一个标签",this);QVBoxLayout* vlayout = new QVBoxLayout();container->setLayout(vlayout);vlayout->addWidget(label);
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/873876.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

科研绘图系列:R语言火山图(volcano plot)

介绍 火山图(Volcano Plot),也称为火山图分析,是一种在生物信息学和基因组学中常用的图形表示方法,主要用于展示基因表达数据的差异。它通常用于基因表达微阵列或RNA测序数据的可视化,帮助研究人员识别在不同条件下表达差异显著的基因。 火山图的基本构成 X轴:通常表示…

sourcetree 下载地址

地址: Sourcetree | Free Git GUI for Mac and Windows

npm, yarn, 和 pip 及更多

npm, yarn, 和 pip 都是不同的包管理器,分别用于不同的编程环境和生态系统中。下面是对它们的简要说明: npm (Node Package Manager) npm 是 Node.js 的默认包管理器,用于在 JavaScript 生态系统中安装、分享和发现模块或包。npm 是目前最大…

TIA博途中FBD功能块图和LAD梯形图进行相互转换的具体方法示例

TIA博途中FBD功能块图和LAD梯形图进行相互转换的具体方法示例 如下图所示,添加一个FC块,编程语言选择FBD,简单的编写一段程序, 如下图所示,右击该FC块,选择属性,进入, 如下图所示&am…

Memcached开发(八):使用PHP进行操作

目录 1. 安装与配置 1.1 安装Memcached服务器 1.2 安装PHP的Memcached扩展 2. 基本操作 2.1 连接Memcached服务器 2.2 设置与获取数据 2.3 删除数据 2.4 检查数据是否存在 2.5 添加和替换数据 3. 高级操作 3.1 批量操作 3.2 数据计数器 3.3 CAS(Check …

python运维实战-ssh工具

1. 功能描述 1.1 系统具有的功能描述 (1)连接服务器:用户可以通过系统连接到远程服务器,系统支持多个服务器配置,并且可以方便地管理这些配置。 (2)执行命令:用户可以在连接成功后…

RabbitMQ发布确认及交换机类型

RabbitMQ发布确认机制详解 一、引言 在消息队列(MQ)技术中,RabbitMQ因其稳定性、可靠性和易用性而受到广泛欢迎。为了确保消息的可靠传递,RabbitMQ提供了一系列高级特性,其中发布确认(Publisher Confirms&…

配置kali 的apt命令在线安装包的源为国内源

目录 一、安装VMware Tools 二、配置apt国内源 一、安装VMware Tools 点击安装 VMware Tools 后,会加载一个虚拟光驱,里面包含 VMware Tools 的安装包 鼠标右键单击 VMware Tools 的安装包,点击复制到 点击 主目录,再点击选择…

C语言 ——— 写一个函数,调整 整型数组 中 奇数偶数的顺序

目录 题目要求 代码实现 题目要求 创建一个整型数组 自定义函数实现:调整该数组中数字的顺序,使得数组中所有的奇数位于数组的前半部分,数组中所有的偶数位于数组的后半部分 举例: 输入的整型数组为:[234,24,45,…

SQLite 合并两个表格

表格结构 在进行表格合并之前,我们需要确保两个要合并的表格具有相同的结构。这意味着两个表格应具有相同的列数和相同的列名。例如,我们有两个表格table1和table2,它们有相同的结构如下: table1 ----------------- | ID | Name…

TCP协议的相关特性

目录 首先先了解TCP和UDP协议的特点 TCP(Transmission Control Protocol,传输控制协议) UDP(User Datagram Protocol,用户数据报协议) TCP的六个标志位 确认应答 超时重传 连接管理(三次握手,四次挥…

十四、正则表达式

文章目录 学习目标一、正则表达式的介绍二、正则查找相关的方法三、re.Match类四、re.compile 方法的使用五、正则修饰符六、正则表达式6.1 正则表达式规则6.2 标点符号的特殊含义6.3 字母的特殊含义七、正则替换八、贪婪模式和非贪婪模式学习目标 能够描述什么是正则表达式能够…

Python爬虫(基本流程)

1. 确定目标和范围 明确需求:确定你需要从哪些网站抓取哪些数据。合法性:检查目标网站的robots.txt文件,了解哪些内容可以被抓取。数据范围:确定爬取数据的起始和结束点,比如时间范围、页面数量等。 2. 选择合适的工…

科研绘图系列:R语言微生物堆积图(stacked barplot)

介绍 堆叠条形图是一种数据可视化图表,它通过将每个条形分割成多个部分来展示不同类别的数值。每个条形代表一个总体数据,而条形内的每个部分则代表该总体数据中不同子类别的数值。这种图表特别适合展示整体与部分的关系,以及各部分在整体中的比例。 特点: 多部分条形:每…

框架设计MVP

重点: 1.presenter里面包含view和model 2.和MVC不同的是View和Model之间不进行交互 3.view包含presenter,view通过presenter反向处理逻辑。 链接: MVP简单实现_安卓mvp presenter-CSDN博客 Model.h #pragma once //Model数据处理器 class Model { …

动漫风格动漫404网站维护HTML源码

源码介绍 动漫风格动漫404网站维护HTML源码,源码由HTMLCSSJS组成,记事本打开源码文件可以进行内容文字之类的修改,双击html文件可以本地运行效果,也可以上传到服务器里面 效果预览 源码下载 动漫风格动漫404网站维护HTML源码

GSAP动画魔法:解锁网页设计的无限创意与动感

GSAP(GreenSock Animation Platform)是一个强大的JavaScript动画库,用于在Web应用程序中创建高性能和复杂的动画效果,其提供了一套丰富的API和工具,使开发者能够轻松地创建流畅、交互式的动画,涵盖了从简单…

Shader入门精要总结(一)渲染流水线

渲染流水线的最终目的在于生成或者说是渲染一张二维纹理,即我们在电脑屏幕上看到的所有效果。 流水线主要分成三个阶段:应用阶段,几何阶段,光栅化阶段。(概念) 一.概述 1. 应用阶段 这个阶段由应用主导&am…

Debian Linux下rclone挂载谷歌云盘碰到的坑

可能是明月好久没有使用境外服务器挂载境外的云盘缘故吧,今天一个代维客户需要他的Linux服务器挂载谷歌云盘好进行云备份,本来是个很简单的事儿,没想到在rclone连接谷歌云盘的时候卡壳了,可是把明月给难为坏了,搜索到的简体中文教程倒是很多,但没有一个提到这个“坑”,最…

【C++】位运算与相关算法问题

1.基础的位运算 在位运算中,比较重要的就是1.按位与(&),2.按位或(|),3.按位异或(^)。 &:有0则为0。 |:有1则为1。 ^:&…