Qt 窗口操作函数(置顶、全屏,最大化最小化按钮设置等)

ops/2024/11/30 17:40:04/

一、窗口置顶 与 取消置顶

void MainWindow::on_windowTopButton_clicked()
{if (m_flags == NULL){m_flags = windowFlags();setWindowFlags(m_flags | Qt::WindowStaysOnTopHint);this->show();}else{m_flags = NULL;setWindowFlags(m_flags);this->show();}
}

二、全屏显示 与 退出全屏

首先,在QT中对于窗口显示常用的有这么几个方法可以调用:

showFullScreen() // Qt全屏显示函数
showMaximized() // Qt最大化显示函数
showMinimized() // Qt最小化显示函数
resize(x, y) // Qt固定尺寸显示函数
setMaximumSize(w, h) // Qt设置最大尺寸函数
setMinimumSize(w, h) // Qt设置最小尺寸函数

但是 showFullScreen() 和 showNormal() 只对顶级窗口有效果,对子窗口无效。要将子窗口全屏显示可用以下方法:

1)将要全屏的 Qt 子窗口调用 setWindowFlags(Qt::Window) 将其类型提升为顶级窗口模式,然后调用 showFullScreen() 函数将子窗口全屏显示。

2)当然全屏后还要恢复正常,即调用 setWindowFlags(Qt::subwindow) 将子窗口设置为非顶级窗口,再调用 showNormal() 还原子窗口显示。

// 全屏显示:
VideoWidget->setWindowFlags(Qt::Window);
VideoWidget->showFullScreen();// 退出全屏时:
VideoWidget->setWindowFlags(Qt::SubWindow);
VideoWidget->showNormal();

三、窗口的 “最大化\最小化\关闭” 按钮设置

1、在 QDialog 中添加 “最大化” 和 "最小化"按钮

在使用 QDialog 时,默认情况下只有 “这是什么” 和 “关闭” 按钮,但是我们习惯有最大化和最小化按钮。这里介绍如何在该模式下如何设置。

this->setWindowFlags(Qt::Dialog | Qt::WindowMinMaxButtonsHint | Qt::WindowCloseButtonHint);

其中 WindowMinMaxButtonsHint 设置的就是最大和最小按钮,但是只这样设置,关闭按钮就不可用了,因此需要再添加 WindowCloseButtonHint 一项。

2、只禁止最大化按钮

this->setWindowFlags(windowFlags() &~ Qt::WindowMaximizeButtonHint);

Qt::WindowMaximizeButtonHint 为 WindowType 枚举变量,通过修改它可以选择禁止 “最小化” 或者 “关闭” 按钮。

四、禁止拖动窗口大小

this->setFixedSize(this->width(),this->height());

五、获取屏幕的宽度和高度

QApplication::desktop()->width();
QApplication::desktop()->height();

即得到屏幕分辨率,如 1024*768。


http://www.ppmy.cn/ops/137984.html

相关文章

【bug记录10】同一iOS webview页面中相同的两个svg图标出现部分显示或全部不显示的情况

一、问题背景 在vue项目中,同一页面中直接复制粘贴了两个相同的svg代码嵌入到html中, 在chrome浏览器中显示良好; 但是在Safari浏览器 或者 iOS WKwebview中,出现只显示一个svg或者两个都不显示的情况,但是绑定在sv…

CrystalDiskInfo:硬盘健康监测工具简介和下载

原论坛给你更好的阅读体验:CrystalDiskInfo:硬盘健康监测工具简介和下载 | 波波论坛 引言 在日常使用电脑时,硬盘的健康状态对于系统的稳定性和数据的安全性至关重要。硬盘出现故障可能会导致数据丢失,严重时甚至会使整个系统无…

【快速幂】算法

2024 - 11 - 26 - 第 33 篇 - 算法笔记 C、快速幂算法 作者(Author): 郑龙浩 / 仟濹(CSDN账号名) 快速幂算法 一、为什么接触这个算法 在做 洛谷P1045 这个算法题的时候,我发现用 普通的高精度算法,依然无法解决大数计算使用内存太大 的问题&#xff…

24/11/29 Vite

安装nodejs 直接下一步 node.js中自带NPM包(管理js库文件)管理工具 测试NPM命令 npm -v 检查版本 npm config set registry https://registry.npmmirror.com 设置远程仓库 2.安装vite vite是前端服务的工具集 vue团队主持开发 Vite 官网 使用vite安装命令 这个命令是安…

CSS浮动属性

Display 文档流 文档流是文档中可显示对象在排列时所占用的位置/空间 例如:块元素自上而下摆放,内联元素,从左到右摆放 标准流里面的限制非常多,导致很多页面效果无法实现 高矮不齐,底边对齐 空白折叠现象 无论多少…

微信小程序下拉刷新与上拉触底的全面教程

微信小程序下拉刷新与上拉触底的全面教程 引言 在微信小程序的开发中,用户体验至关重要。下拉刷新和上拉触底是提高用户交互体验的重要功能,能够让用户轻松获取最新数据和内容。本文将详细介绍这两个功能的实现方式,结合实际案例、代码示例和图片展示,帮助开发者轻松掌握…

Conda 管理python开发环境

同步发布于我的网站 🚀 故事起因: 在公司使用Requests多任务并行开发时遇到了问题,使用 ProcessPoolExecutor 时不能正常发出网络请求,会卡在网络请求发不出去,但是善于用 ThreadPoolExecutor 时是可以的,纠结了很久,一…

Docker化部署Django:高效、可扩展的Web应用部署策略

在当今快速发展的Web开发领域,Django以其“快速开发”和“简洁代码”的理念,成为了Python Web框架中的佼佼者。而Docker,作为一种轻量级的容器化技术,为应用的部署和管理提供了极大的便利。本文将探讨Django的优点、Docker部署的好…