Qt 应用程序主界面


主要窗口类的概述
这些类提供了典型现代主应用程序窗口所需的一切,如主窗口本身、菜单和工具栏、状态栏等。

QAction

可以插入小部件的抽象用户界面操作

QActionGroup

将动作组合在一起

QDockWidget

小部件,可以停靠在QMainWindow中,也可以作为桌面的顶层窗口浮动

QMainWindow

主应用程序窗口

QMdiArea

显示MDI窗口的区域

QMdiSubWindow

qmediarea的子窗口类

QMenu

菜单小部件,用于菜单栏、上下文菜单和其他弹出式菜单

QMenuBar

水平菜单栏

QSizeGrip

调整顶级窗口大小的句柄

QStatusBar

适合显示状态信息的水平条

QToolBar

包含一组控件的可移动面板

QWidgetAction

通过一个接口扩展QAction,将自定义小部件插入到基于操作的容器中,比如工具栏

主窗口类

Qt提供了下列类来管理主窗口和相关的用户界面组件:

  • QMainWindow是可以围绕它构建应用程序的中心类。与配套的QDockWidget和QToolBar类一起,它表示应用程序的顶级用户界面。
  • QDockWidget提供了一个小部件,可用于创建可拆卸的工具面板或辅助窗口。停靠窗口组件会记录自己的属性,它们可以作为外部窗口被移动、关闭和浮动。
  • QToolBar提供了一个通用的工具栏小部件,它可以容纳许多不同的操作相关小部件,例如按钮、下拉菜单、组合框和微调框。Qt强调统一的操作模型,这意味着工具栏与菜单和键盘快捷键可以很好地配合。

示例代码

使用QMainWindow很简单。通常,我们子类化QMainWindow,并在QMainWindow构造函数中设置菜单、工具栏和停靠部件。

要在主窗口中添加菜单栏,只需创建菜单,并将它们添加到主窗口的菜单栏。注意,QMainWindow::menuBar()函数会在第一次被调用时自动创建菜单栏。也可以调用QMainWindow::setMenuBar()在主窗口中使用自定义菜单栏。

MainWindow::MainWindow(QWidget *parent): QMainWindow(parent)
{...newAct = new QAction(tr("&New"), this);newAct->setShortcuts(QKeySequence::New);newAct->setStatusTip(tr("Create a new file"));connect(newAct, &QAction::triggered, this, &MainWindow::newFile);openAct = new QAction(tr("&Open..."), this);openAct->setShortcuts(QKeySequence::Open);openAct->setStatusTip(tr("Open an existing file"));connect(openAct, &QAction::triggered, this, &MainWindow::open);...
}

一旦创建了操作,我们就可以将它们添加到主窗口组件中。首先,我们将它们添加到弹出菜单中:

    fileMenu = menuBar()->addMenu(tr("&File"));fileMenu->addAction(newAct);fileMenu->addAction(openAct);...fileMenu->addSeparator();...

QToolBar和QMenu类使用Qt的action系统来提供一致的API。在上面的代码中,使用QMenu::addAction()函数将一些现有的操作添加到file菜单中。QToolBar也提供了这个功能,使得在主窗口的不同部分重用操作变得很容易。这避免了不必要的重复工作。

我们创建一个工具栏,作为主窗口的一个子窗口,并在其中添加所需的操作:

fileToolBar = addToolBar(tr("File"));
fileToolBar->addAction(newAct);
fileToolBar->addAction(openAct);...
fileToolbar->setAllowedAreas(Qt::TopToolBarArea | Qt::BottomToolBarArea);
addToolBar(Qt::TopToolBarArea, fileToolbar);

在这个示例中,工具栏被限制在主窗口的顶部和底部工具栏区域,并且最初被放置在顶部工具栏区域。我们可以看到newAct和openAct指定的操作将同时显示在工具栏和文件菜单中。
QDockWidget的使用方式与QToolBar类似。我们创建一个dock小部件作为主窗口的子窗口,并添加widget作为dock小部件的子窗口:

    contentsWindow = new QDockWidget(tr("Table of Contents"), this);contentsWindow->setAllowedAreas(Qt::LeftDockWidgetArea| Qt::RightDockWidgetArea);addDockWidget(Qt::LeftDockWidgetArea, contentsWindow);headingList = new QListWidget(contentsWindow);contentsWindow->setWidget(headingList);

在本例中,dock小部件只能放置在左侧和右侧dock区域中,并且它最初被放置在左侧dock区域中。
QMainWindow API允许程序员自定义哪个停靠小部件区域占据停靠小部件区域的四个角。如果需要,可以使用QMainWindow::setCorner()函数更改默认值:

setCorner(Qt::TopLeftCorner, Qt::LeftDockWidgetArea);
setCorner(Qt::BottomLeftCorner, Qt::LeftDockWidgetArea);
setCorner(Qt::TopRightCorner, Qt::RightDockWidgetArea);
setCorner(Qt::BottomRightCorner, Qt::RightDockWidgetArea);

下图显示了由上述代码生成的配置。请注意,在此布局中,左侧和右侧的dock小部件将占据主窗口的顶部和底部角落。

设置完所有主窗口组件后,使用类似于以下的代码创建和安装中心小部件:

QWidget *centralWidget = new QWidget(this);
setCentralWidget(centralWidget);

Application Main Window | Qt Widgets 5.15.17

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

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

相关文章

5、Django Admin后台移除“删除所选”操作

默认情况下,Django Admin后台的listview模型列表页,会有一个Delete Selected删除所选操作。假设你需要再从Hero管理模型中移除该删除操作。 ModelAdmin.get_actions方法可以返回所有的操作方法。通过覆盖此方法,移除其中delete_selected方法…

毒猫粮危机!安全主食罐怎么选?健康猫罐头推荐

央视315晚会揭露了“毒猫粮”事件,让众多爱猫人士心惊胆战。河北邢台南和区,这个被誉为“中国宠物食品之都”的地方,年产量惊人的130万吨宠物食品背后,竟隐藏着用劣质原料冒充高端食材的丑闻。低价粉料取代了昂贵鲜肉,…

[STL --stack_queue详解]stack、queue,deque,priority_queue,容器适配器

stack stack介绍 1、stack是一种容器适配器,专门用在具有后进先出操作的上下文环境中,其删除只能从容器的一端进行元素的插入与提取操作。 2、stack是作为容器适配器被实现的,容器适配器即是对特定类封装作为其底层的容器,并提供…

0成本实现.NET Web API 8.0项目内网映射

1.背景 最近在学习CICD,里面会有用到内网映射的使用场景。为了加深对内网映射实操的记忆。我实操了下基于.Net 8.0的内网映射,并支持互联网访问。本文主要介绍了在win11下安装路由侠,并将.net 8.0发布到win11,项目运行、路由侠配…

NR L2 UL处理data优先级问题

MAC 处理LCG 的顺序 有优先级如上图 L2 UL处理data优先级是有明确规定的,这里简单整理下。 MAC logical channel 处理data的优先级,即哪些data要优先处理有定义不同的优先级,如上图。 对于RLC 也有类似的规定,如上图38.322中所述&…

解决 Transformer 根本缺陷,CoPE 论文爆火:所有大模型都能获得巨大改进!

即使最强大的 LLM 也难以通过 token 索引来关注句子等概念,现在有办法了。 最近两天,马斯克和 LeCun 的口水战妥妥成为大家的看点。这两位 AI 圈的名人你来我往,在推特(现为 X)上相互拆对方台。 LeCun 在宣传自家最新论…

【C++】C++ STL探索:Vector使用与背后底层逻辑

C语法相关知识点可以通过点击以下链接进行学习一起加油!命名空间缺省参数与函数重载C相关特性类和对象-上篇类和对象-中篇类和对象-下篇日期类C/C内存管理模板初阶String使用String模拟实现 在string类文章中提及了STL容器间的接口是大差不差的,本篇将直…

Linux | System V 共享内存:工作原理与使用指南

目录 一、System V 共享内存概述 二、共享内存的使用方法 1. shmget():创建或获取共享内存段 2. shmat():将共享内存附加到进程地址空间 3. shmdt():将共享内存从进程地址空间分离 4. shmctl():控制共享内存段 三、共享内存…

Kioxia的NVMe RAID卸载有何亮点?

随着每一代固态硬盘SSD的速度不断提升,RAID阵列面临着一个重大的挑战:如何有效地维持并扩展性能。即使是通过专门的RAID卡来处理RAID操作的情况下,例如在RAID 5阵列中,简单的写请求也需要涉及两次读取和两次写入不同的SSD。如果没…

《深度学习》OpenCV 图像轮廓检测、轮廓处理及代码演示

目录 一、图像轮廓检测 1、边缘检测和轮廓检测 2、常用的图像轮廓检测方法包括: 1)基于梯度的方法 2)基于边缘检测器的方法 3)基于阈值的方法 3、查找轮廓的函数 4、轮廓的绘制 5、轮廓特征 1)轮廓面积 2&a…

Linux远程管理工具推荐

原文阅读:【巨人肩膀社区专栏分享】Linux远程管理工具推荐 前两天xshell不让用了,刚好一台新电脑要装一个远程连接工具,准备试试其他。网上找了一些资料整理如下。 欢迎各位看官评论区说出你在使用的工具,期待你的使用经验分享(…

亲笔签支撑重庆市实现“军人退役一件事”,助力退伍老兵再启新程

9月,又到退伍季。重庆市退役军人事务局积极推动,联合公安、人社、医保等部门,将退役军人返乡需要办理的退役报到、户口登记、预备役登记、身份证办理、医疗保险、养老保险、一次性经济补助金等12项分散在5个部门的服务事项,集成到…

可交互、会学习、自成长机器人——李德毅院士

在以“农业无人农场”为主题的中国工程科技论坛上,中国工程院院士、欧亚科学院院士、中国人工智能学会和中国指挥与控制学会名誉理事长,中科原动力首席科学家李德毅院士应邀做题为《机器具身交互智能》的演讲。李德毅院士表示,智能机器不但把…

最新HTML5中的视频和音频讲解

第6章 HTML5中的视频和音频 H5新增video,audio,播放视频和音频,统称为多媒体元素。 6.1 多媒体元素基本属性 video用于电影文件和其他视频流的播放。 audio用于音乐文件和其他音频流的播放。 video的属性 src:文件路径,本地或者网络上。…

搭建大模型知识库流程,以及基于langchain实现大模型知识库案例

“ RAG检索增强生成是为了解决大模型知识不足的问题 ” 大模型主要面临三个问题: 垂直领域内的知识不足‍‍‍‍‍ 大模型知识有时间限制‍ 大模型幻觉问题 第一个问题产生的原因是因为,没有经过垂直领域数据训练的大模型普遍表现不好;其…

2024年全国大学生数学建模比赛思路、题目、代码

竞赛时间及参赛建议 竞赛开始时间:北京时间2024年9月5日18:00 竞赛结束时间:北京时间2024年9月8日20:00 关于今年每道题的思路,可以关注我gzh回复”国赛A/B/C/D/E题“获取 需要帮助的可以关注公众号,在功能栏点击联系我们&…

java发送邮箱如何实现?如何配置Java发信?

java发送邮箱功能怎么集成?Java发送邮件的几种方式? 无论是用于用户注册验证、密码重置,还是营销邮件的发送,"Java发送邮箱"都是一个不可忽视的技术点。那么,如何在Java应用中实现邮件发送呢?Ao…

2025入局自动驾驶的秋招人,应该瞄准哪些技术方向?

2024年已过大半,9月随着开学季的来临,2025届的毕业生也纷纷踏出了秋招的第一步。 无论是在学生期间就深耕许久智驾技术、还是从其他赛道转战至智驾,自2023年末一直到今年上半年来,都一直国内智驾行业层出不穷的各种破圈动态刷屏。…

极市开发平台yolov8训练无人机数据集样例数据流程

先进入vscode,进入src_repo文件夹。 第一步,克隆一个比较好的博主的库: GitHub - Incalos/YOLO-Datasets-And-Training-Methods: This project involves making custom datasets for the YOLO series and model training methods for YOLO.…

基于Qt设计的人脸课堂考勤机系统(219)

文章目录 一、前言1.1 项目介绍【1】开发背景【2】项目实现的功能1.2 设计思路【1】系统架构设计【2】流程设计【3】关键技术实现【2】整体构架1.3 项目开发背景【1】选题的意义【2】可行性分析【3】参考文献【4】摘要【5】项目背景1.4 开发工具的选择1.5 系统框架图1.6 系统功…