当前位置: 首页 > article >正文

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

一、窗口置顶 与 取消置顶

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.kler.cn/a/418963.html

相关文章:

  • 一万台服务器用saltstack还是ansible?
  • 基于springboot中小型制造企业质量管理系统源码和论文
  • 单片机学习笔记 15. 串口通信(理论)
  • Java中的“抽象类“与“接口“之间的关系
  • C#面向对象之访问限制,类基础,继承
  • 0017. shell命令--tac
  • Ubuntu 服务器部署 Tomcat 并配置 SSL/TLS 证书
  • 斐波那契数
  • k8s 1.28 聚合层部署信息记录
  • 2024年华为OD机试真题-矩阵扩散-C++-OD统一考试(E卷)
  • win32com python 操作wps 解决修改 表格触发关闭 其他excel的功能
  • 如何高效地架构一个Java项目
  • 三:安装服务-controller node
  • Oracle 去除小数点后面的零
  • CMAKE常用命令详解
  • 《Vue 组件化开发:构建可复用的模块》
  • 【笔记】成为雍正
  • CPU性能优化--性能瓶颈
  • 如何在 Debian 8 上设置 Apache 虚拟主机
  • Flask项目入门—会话技术Cookie和Session
  • SpringBoot整合WebService
  • flink学习(9)——time+water mark
  • Linux服务器使用JupyterLab
  • shell编程基础笔记
  • 相关前端程序
  • element-plus弹窗二次封装踩坑