Qt中QMainWindow的相关介绍

目录

菜单栏

工具栏

状态栏:

停靠窗口:

QMainWindow 是标准基础窗口中结构最复杂的窗口,其组成如下:

提供了菜单栏 , 工具栏 , 状态栏 , 停靠窗口
菜单栏:只能有一个,位于窗口的最上方
工具栏:可以有多个,默认提供了一个,窗口的上下左右都可以停靠
状态栏:只能有一个,位于窗口最下方
停靠窗口:可以有多个,默认没有提供,窗口的上下左右都可以停靠

菜单栏

添加菜单项,关于顶级菜单可以直接在 UI 窗口中双击,直接输入文本信息即可,对应子菜单项也可以通过先双击在输入的方式完成添加,但是这种方式不支持中文的输入。

常用的添加方式

一般情况下,我们都是先在外面创建出 QAction 对象,然后再将其拖拽到某个菜单下边,这样子菜单项的添加就完成了。

 

将创建好的open_action拖拽到“文件”的位置,显示红线时松手

 运行程序:

在mainwindow中添加这段代码 :

    connect(ui->open_action,&QAction::triggered,this,[=](){QMessageBox::information(this,"clicked","你好呀");});

再点击打开时,会弹出窗口 

 

 工具栏

 

示例(

这段代码是将一个按钮和一个文本输入框添加到一个工具栏中。

首先,通过 ui->toolBar->addWidget() 函数,将一个新的 QPushButton 对象添加到工具栏中,并设置按钮的文本为 "搜索"。

接下来,创建一个 QLineEdit 对象,并通过 ui->toolBar->addWidget() 函数将其添加到工具栏中。这个 QLineEdit 是一个用于接收用户输入的文本输入框。

edit->setMaximumWidth(200);,则表示将文本输入框的最大宽度设置为 200 像素。

通过调用 edit->setMaximumWidth() 函数,可以设置 QlineEdit 的最大宽度,以限制用户在输入时的可见宽度。

通过 edit->setFixedWidth() 函数,设置文本输入框的固定宽度为 100 像素。这会限制文本输入框的宽度,确保它在工具栏中占据固定的空间。

这样,你的工具栏就包含了一个按钮和一个文本输入框,用户可以点击按钮或在文本输入框中输入内容进行相应的操作。

):

    ui->toolBar->addWidget(new QPushButton("搜索"));QLineEdit* edit = new QLineEdit;//edit->setMaximumWidth(200);edit->setFixedWidth(100);ui->toolBar->addWidget(edit);

工具栏属性介绍: 

 

 movable:用于指定工具栏是否可移动

allowedAreas:定义了工具栏可以放置的区域

orientation:它指定了工具栏的布局方向

iconSize:用于设置工具栏中图标的大小

toolButtonStyle:用于设置工具栏按钮的样式

floatable:用于指定工具栏是否可拖动浮动

状态栏:

一般情况下,需要在状态栏中添加某些控件,显示某些属性,使用最多的就是添加标签 QLabel

QStatusBar 是一个用于显示状态消息或临时消息的窗口部件。它提供了一些常用的方法来添加小部件、清除消息和显示消息。

1. addWidget(QWidget *widget, int stretch = 0): 该方法可以向状态栏中添加一个小部件。widget 是要添加的小部件的指针,stretch 是可选参数,用于设置小部件的拉伸因子。拉伸因子用于控制小部件在状态栏中的布局位置。默认情况下,拉伸因子为0,表示小部件不会拉伸,并紧密地放置在状态栏中。

2. clearMessage(): 该方法用于清除状态栏中的消息。如果有消息当前显示在状态栏上,则会被移除。

3. showMessage(const QString &message, int timeout = 0): 该方法用于在状态栏中显示一条消息。message 是要显示的消息文本,timeout 是可选参数,用于设置消息显示的持续时间(以毫秒为单位)。如果 timeout 设置为 0(默认值),则消息将一直显示,直到被清除。

// 类型: QStatusBar
void QStatusBar::addWidget(QWidget *widget, int stretch = 0);[slot] void QStatusBar::clearMessage();
[slot] void QStatusBar::showMessage(const QString &message, int timeout = 0);

示例(在状态栏添加按钮和标签): 

    QPushButton* button = new QPushButton("按钮");ui->BAR->addWidget(button);// 标签QLabel* label = new QLabel("hello,world");ui->BAR->addWidget(label);

 

 停靠窗口:

找到Containers下的Dock Widget控件,拖到ui界面中

 

QDockWidget 的重要属性:

1. titleBarWidget: 用于设置自定义标题栏部件的属性。可以通过设置一个QWidget派生类的指针来替换默认的标题栏。

2. allowedAreas: 指定允许停靠的区域。可以使用 Qt::DockWidgetAreas 枚举值来设置,如 Qt::LeftDockWidgetArea、Qt::RightDockWidgetArea、Qt::TopDockWidgetArea、Qt::BottomDockWidgetArea。可以通过按住Ctrl键并拖动窗口来限制其停靠区域。

3. features: 用于启用或禁用 QDockWidget 的功能。可以使用 Qt::DockWidgetFeature 枚举值来设置,如 Qt::DockWidgetClosable(可关闭)、Qt::DockWidgetMovable(可移动)、Qt::DockWidgetFloatable(可浮动)等。

4. floating: 指定 QDockWidget 是否处于浮动状态。可以使用 `dockWidget->setFloating(true)` 将其设置为浮动状态。

5. sizeHint: 指定停靠窗口的首选大小。可以使用 `dockWidget->setMinimumSize(QSize(width, height))` 和 `dockWidget->setMaximumSize(QSize(width, height))` 方法来设置最小和最大大小。

6. allowedAreas、features 和 floating 这些属性可以通过 `dockWidget->setAllowedAreas(areas)`、`dockWidget->setFeatures(features)` 和 `dockWidget->setFloating(floating)` 这样的方法进行设置。

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

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

相关文章

AI制图工具丨Midjourney产品功能介绍

了解如何使用Discord上的Midjourney Bot通过简单的文本提示创建自定义图像 Midjourney是一款AI制图工具,只要关键字,就能透过AI算法生成相对应的图片,只需要不到一分钟。 可以选择不同画家的艺术风格,例如安迪华荷、达芬奇、达利…

基于单片机水质检测系统的设计与实现

功能介绍 以STM32单片机作为主控系统;液晶显示当前参数;PH模块采集当前水质PH酸碱度;DS18B20温度传感器采集当前水体温度;TDS传感器采集当前水体TDS值;浊度传感器采集当前水体浑浊度;按键设置PH、温度、TDS…

Elasticsearch 集群某一节点修改 IP 后无法启动问题复盘

1、集群环境及问题描述 集群版本:6.8.X集群节点:5节点(三个节点为主数据节点,另外两个独立数据节点)。问题描述:由于IP冲突,修改了一台服务器的IP,然后5台配置改了一下一次重启&…

Kafka 深度剖析

1、应用场景 1.1 kafka场景 Kafka最初是由LinkedIn公司采用Scala语言开发,基于ZooKeeper,现在已经捐献给了Apache基金会。目前Kafka已经定位为一个分布式流式处理平台,它以 高吞吐、可持久化、可水平扩展、支持流处理等多种特性而被广泛应用…

flask基本用法小白教程+按钮跳转到指定页面+python和pip安装(后附)

一、flask学习教程: 1.1 基本程序: 大家可以在pycharm中复制如下代码,先感受一下flask的基本用法: 点击链接可进入浏览器查看程序运行的结果,在127.0.0.1:5000后面添上/test1/等设定的文字,可查看不同函…

基于单片机的蓝牙音乐喷泉的设计与实现

功能介绍 以51单片机作为主控系统;通过HM-18蓝牙音频模块进行无线传输; 通过LM386功放模块对音频信号进行放大;手机端可以直接控制音频播放,并且最远距离可达20米;手机端可以进行任意音乐切换,播报、暂停&a…

微信小程序中常见组件的使用

文章目录 微信小程序中常见组件的使用视图组件viewscroll-viewswipermovable-area 基础组件icontextrich-textprogress 表单组件buttoncheckbox、checkbox-grouplabelforminputpicker单列选择器多列选择器时间选择器&日期选择器&地区选择器 picker-viewradiosliderswit…

MySQL数据备份与恢复

目录 ​编辑 一、数据备份 1.1物理备份 1.1.1冷备份 1.1.2热备份 1.1.3温备份 二、逻辑分区 2.1完全分区 2.2差异分区 2.3增量备份 三、数据备份恢复实验 3.1做一个数据 3.2物理冷备份与恢复 3.3mysqldump 备份与恢复(温备份) 3.4Mysql数据…

采集极验4滑块验证码图片数据

在网络安全领域,验证码是一种常见的用于验证用户身份或防止恶意机器人攻击的技术。而极验4滑块验证码作为一种广泛应用的验证码形式,其具有较高的安全性和防御能力。本文将以获取极验4滑块验证码图片数据为主题,介绍相关技术和方法。 一、极…

redis 相关

redis相关面试题 redis支持哪几种数据形式? String,hash,set,zset,list redis主要消费什么物理资源? 内存,key-value的形式, redis 具有快速和数据持久化的特征,如果不将数据放在内存中,磁盘 I/O 速度为严…

MySQL常用语句

目录 连接MySQL 数据库操作 表的操作 数据操作 进阶查询 源码等资料获取方法 连接MySQL -- 语法:mysql -u用户名 -p密码 注:--空格 起到注释的作用 mysql -uroot -p123456 数据库操作 -- 显示当前时间、用户名、数据库版本(可以单独…

MATLAB 之 可视化图形用户界面设计

这里写目录标题 一、可视化图形用户界面设计1. 图形用户界面设计窗口1.1 图形用户界面设计模板1.2 图形用户界面设计窗口 2. 可视化图形用户界面设计工具1.1 对象属性检查器2.2 菜单编辑器2.3 工具栏编辑器2.4 对齐对象工具2.5 对象浏览器2.6 Tab 键顺序编辑器 3. 可视化图形用…

hibernate入门,springboot整合hibernate

Mybatis和Hibernate是我们常用的两大ORM框架,这篇文章主要介绍hibernate的使用,如何通过springboot整合hibernate,实现简单的crud功能。 添加依赖 首先,需要创建一个springboot项目,这里就取名为hibernate。项目创建完…

【Visual Studio Code】---自定义键盘快捷键设置

概述 一个好的文章能够帮助开发者完成更便捷、更快速的开发。书山有路勤为径,学海无涯苦作舟。我是秋知叶i、期望每一个阅读了我的文章的开发者都能够有所成长。 一、进入键盘快捷键设置 1、进入键盘快捷键设置方法1 使用快捷键进入键盘快捷键设置先按 Ctrl K再…

怎么做活码二维码?动态码在线生成技巧

现在制作二维码用户大多习惯使用活码二维码,其优势在于能够在二维码不变的情况下修改内容,能够生成二维码长期使用,还可以设置有效期、加密等其他功能可以使用。那么怎么生成活码二维码呢?可以使用二维码生成器(免费在…

leetcode 445. Add Two Numbers II(两数相加)

用链表代表2个数字,这2个数字相加的和用链表返回。 最高位在链表的head. 思路: 1.链表逆序 数字相加是从低位到高位的,然而链表中的数字是从高位指向低位。 所以涉及到链表的逆序。 逆序之后只需从head到tail把两个链表的数字相加&#x…

克服 ClickHouse 运维难题:ByteHouse 水平扩容功能上线

前言 对于分析型数据库产品,通过增加服务节点实现集群水平扩容,并提升集群性能和容量,是运维的必要手段。 但是对于熟悉 ClickHouse 的工程师而言,听到“扩容”二字一定会头疼不已。开源 ClickHouse 的 MPP 架构导致扩容成本高&…

C++图形开发(16):绘制一个圆环和一根针

文章目录 绘制一个圆环和一根针1.1 绘制1.2 line()函数1.3 circle()函数1.4 setlinestyle()函数1.5 setlinecolor()函数 接下来,我会继续制作一些小游戏,但因为整个难度的上升(毕竟我也是初学者),可能文章不会再像之前…

http连接处理(下)(四)

1.结合代码分析请求报文响应 下面我们将介绍服务器如何响应请求报文,并将该报文发送给浏览器端。首先介绍一些基础API,然后结合流程图和代码对服务器响应请求报文进行详解。 基础API部分,介绍stat、mmap、iovec、writev。 流程图部分&…

【Ubuntu 20.04LTS系统】安装CUDA11.8、cuDNN,可进行CUDA版本切换

Ubuntu 20.04LTS系统安装CUDA11.8、cuDNN,可进行CUDA版本切换 1. 更改为清华源并更新软件列表和依赖项2. 安装CUDA3. 安装cuDNN4. CUDA版本切换 1. 更改为清华源并更新软件列表和依赖项 https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/ # 默认注释了源码镜像以提…