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.hqwc.cn/news/26567.html

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

相关文章

攻不下dfs不参加比赛(十四)

标题 为什么练dfs题目为什么练dfs 相信学过数据结构的朋友都知道dfs(深度优先搜索)是里面相当重要的一种搜索算法,可能直接说大家感受不到有条件的大家可以去看看一些算法比赛。这些比赛中每一届或多或少都会牵扯到dfs,可能提到dfs大家都知道但是我们为了避免眼高手低有的东…

软件体系结构-KWIC索引系统

引言 KWIC作为一个早年间在ACM的Paper提出的一个问题,被全世界各个大学的软件设计课程奉为课堂讲义或者作业的经典。(From Wiki,FYI,D. L. Parnas uses a KWIC Index as an example on how to perform modular design in his pap…

MySQL(三)SQL优化、Buffer pool、Change buffer

MySQL系列文章 MySQL(一)基本架构、SQL语句操作、试图 MySQL(二)索引原理以及优化 MySQL(三)SQL优化、Buffer pool、Change buffer MySQL(四)事务原理及分析 MySQL(五&a…

自学数据结构和算法(5)

二叉树的遍历 分为先序、中序、和后序遍历。 这三种遍历都可以由递归序来得到: (1)先序遍历(也是二叉树的深度优先遍历)是第一次到某个结点才打印; (2)中序遍历是第二次到某个结…

谋合作、创新境 | 百度参观图为科技生产全链路

当代科技的发展不断催生出新的变革和机遇,百度作为全球顶尖的高科技公司,凭借其强大的创新基因,一直处于人工智能领域的最前沿。   近日,百度公司派出了一支专业团队来到了图为科技,对图为的研发技术及生产线进行了全…

《Maven实战》读后感

目录 一、一些思考1、为什么平时编写的Java项目也叫做Maven项目?2、平常的Java项目目录为什么长这样,可以改变目录结构吗?3、对于Maven项目来说,Maven能帮我们做什么?4、为什么一定需要Maven私服,不要行不行…

每天一道C语言编程:排队买票

题目描述 有M个小孩到公园玩,门票是1元。其中N个小孩带的钱为1元,K个小孩带的钱为2元。售票员没有零钱,问这些小孩共有多少种排队方法,使得售票员总能找得开零钱。注意:两个拿一元零钱的小孩,他们的位置互…

GoFrame v2.5 版本发布,企业级 Golang 开发框架

大家好啊,GoFrame 框架今天发布了 v2.5.0 正式版本啦!👏👏👏👏 本次版本主要是对已有功能组件以及开发工具上的改进工作。其中,开发工具新增了 gf gen ctrl 命令,以规范化定义、开发…

orcle报错:TNS 监听程序无法为请求的服务器类型找到可用的处理程序

orcle报错:TNS 监听程序无法为请求的服务器类型找到可用的处理程序 方法一:配置文件修改 服务端的数据库是专用服务器,但是在客户端的tnsname.ora里配置中设置了连接方式为shared,这种情况下打开tnsnames.ora, 找到安装orcle的安装目录,点…

Java常用类(一)

⭐ 基本数据类型的包装类⭐ 包装类基本知识⭐ 包装类的用途⭐ 自动装箱和拆箱⭐ 自定义一个简单的包装类 ⭐ 字符串相关类 ⭐ 基本数据类型的包装类 我们之前写过八种基本数据类型并不是对象,为了将基本类型数据和对象之间实现互相转化,Java 为每一个基…

【EXCEL】数据录入的快捷键和正确格式

目录 0.环境 1.内容概述 2.具体内容 2.1数据录入换行换列的快捷键(标准的数据输入方式) 2.2日期的正确格式和使用(标准日期格式与长日期) 2.2.1 标准日期 2.2.2 长日期 2.2.3 显示当前日期和时间的快捷键 2.3百分比的正确…

stm32(串口知识点)

HAL串口发送/接收函数: HAL_UART_Transmit(); 串口发送数据,使用超时管理机制HAL_UART_Receive(); 串口接收数据,使用超时管理机制HAL_UART_Transmit_IT(); 串口中断模式发送 HAL_UART_Receive_IT(); 串口中断模式接收 HAL_UART_Transmit(…