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

QT 如何置顶窗口并激活

基本上,客户端软件都会有置顶某个窗口的需求。置顶窗口+激活窗口,两者不是同一个问题。有时候窗口置顶了,并不代表该窗口属于激活状态。本文将尝试把这两个问题一起解决了,请看下文:

一、置顶窗口

通过函数setWindowFlags设置属性:Qt::WindowStaysOnTopHint 即可。

#include "mainwindow.h"
#include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent): QWidget(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);//this->setWindowFlags(Qt::WindowStaysOnTopHint);//top show
}MainWindow::~MainWindow()
{delete ui;
}

二、激活窗口

2.1、设置定时器

在窗口初始化时设置定时器,定时执行激活窗口的代码。至于缺点也显而易见:定时重复激活窗口,即使不需要重新激活窗口也会重复激活,浪费计算资源。

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QTimer>MainWindow::MainWindow(QWidget *parent): QWidget(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);//this->setWindowFlags(Qt::WindowStaysOnTopHint);QTimer *t = new QTimer;t->start(500);QObject::connect(t, &QTimer::timeout, [this]() {this->raise();          //提升该窗口到父窗口堆栈的顶部this->show();           //显示窗口this->activateWindow(); //激活窗口});
}MainWindow::~MainWindow()
{delete ui;
}

2.2、事件重载-休眠唤醒激活方法(推荐)

重载窗体类的changeEvent函数,通过监听QEvent::ActivationChange,来判断窗口是否处于激活状态,如果不是则激活窗口。

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QTimer>
#include <QThread>
#include <windows.h>//SetWindowPosMainWindow::MainWindow(QWidget *parent): QWidget(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);//this->setWindowFlags(Qt::WindowStaysOnTopHint);
}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::changeEvent(QEvent *event)
{QWidget::changeEvent(event);if (event->type() == QEvent::ActivationChange){if (this->isActiveWindow()){// The window is already activereturn;}else{
#if 1QThread::msleep(10);this->raise();          //主窗体显示堆栈置顶this->show();           //显示窗体this->activateWindow(); //激活主窗体
#else//same with prev method.setWindowFlags(windowFlags() | Qt::WindowStaysOnTopHint);::SetWindowPos((HWND)winId(), HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE);
#endif}}
}

相关文章:

QT 如何置顶窗口并激活

基本上&#xff0c;客户端软件都会有置顶某个窗口的需求。置顶窗口激活窗口&#xff0c;两者不是同一个问题。有时候窗口置顶了&#xff0c;并不代表该窗口属于激活状态。本文将尝试把这两个问题一起解决了&#xff0c;请看下文&#xff1a; 一、置顶窗口 通过函数setWindowF…...

嵌入式面试刷题(day19)

Makefile和Cmake的区别 Makefile 和 CMake 都是用于构建和管理软件项目的工具,但它们有不同的设计理念和使用方式。以下是二者的主要区别: 1. 概念和工作原理 Makefile: Makefile 是 make 工具的配置文件,定义了如何编译和链接程序。它基于文件的时间戳,使用规则(规则指…...

Robot Framework命令和Tag运用

前面的文章中我们为大家介绍了市面上常见自动化测试框架的解读以及Robot Framework的环境搭建&#xff0c;本文我们继续为大家介绍Robot Framework命令和Tag的运用&#xff0c;首先我们先一起看一下Robot Framework有哪些命令。 Robot Framework命令 先来看这一条&#xff1a…...

软件分享丨PDF Shaper

【资源名】PDF Shaper 【地址】https://www.pdfshaper.com/ 【资源介绍】 PDF Shaper Professional是一款功能强大的PDF文档编辑与转换工具&#xff0c;使用它可以对PDF文件进行各种转换、提取、合并、旋转、加密、解密等编辑操作&#xff0c;主要功能有分割和合并PDF文件&…...

pytorch的标签平滑介绍

什么是标签平滑(Label Smoothing)? 标签平滑(Label Smoothing)是一种正则化技术,旨在防止模型过度自信(即输出的概率分布过于“尖锐”)。在分类任务中,标准的目标标签是one-hot编码,也就是正确类别的概率为 1,其他类别的概率为 0。而标签平滑通过将正确类别的概率从…...

CTE 与存储过程:SQL 查询简化与复杂业务逻辑处理的最佳选择

CTE&#xff08;Common Table Expression&#xff0c;公共表表达式&#xff09;和存储过程是两种不同的SQL工具&#xff0c;分别用于解决不同的问题。它们各有优缺点&#xff0c;适用于不同的场景。让我们从以下几个方面来比较它们&#xff1a; 1. 定义与作用 CTE&#xff1a;…...

mysql delete命令操作后,数据库文件大小并未变化,该怎么解决?

在 MySQL 中&#xff0c;使用 DELETE 命令删除数据后&#xff0c;数据表的大小可能不会立即减小&#xff0c;因为 MySQL 并不总是立即回收已删除数据所占用的空间。这是因为 MySQL 的存储引擎&#xff08;如 InnoDB&#xff09;可能会保留这些空间以备将来插入新数据时使用&…...

GitLab 发布安全补丁版本 17.3.2, 17.2.5, 17.1.7

本分分享极狐GitLab 补丁版本 17.4.2, 17.3.5, 17.2.9 的详细内容。这几个版本包含重要的缺陷和安全修复代码&#xff0c;我们强烈建议所有私有化部署用户应该立即升级到上述的某一个版本。对于极狐GitLab SaaS&#xff0c;技术团队已经进行了升级&#xff0c;无需用户采取任何…...

data_table_2 与 flutter 官方 DataTable 的区别

data_table_2 与 flutter 官方 DataTable 的区别 https://blog.csdn.net/ken2232/article/details/143181634 flutter 数据表增强库 data_table_2 错误问题 记录 (****) https://blog.csdn.net/ken2232/article/details/143180018 data_table_2 与 flutter 官方 DataT…...

TRIZ创新方法培训值得去吗?

面对日益复杂的市场环境和竞争态势&#xff0c;掌握有效的创新方法不仅关乎企业的生死存亡&#xff0c;也直接关系到个人的职业成长与竞争力。TRIZ作为一种系统化的创新方法论&#xff0c;其培训课程正逐渐受到企业和个人的广泛关注。那么&#xff0c;TRIZ创新方法培训究竟值得…...

STM32之基本定时器TIM6和TIM7

1.定时器概念和作用 在编程任务中&#xff0c;定时器是非常常用的一个问题。当需要定时发送数据&#xff0c;定时起某个任务&#xff0c;定时做某个操作等等&#xff0c;这些都离不开定时器。本文基于以STM32F4xx系列开发板&#xff0c;介绍一下基本定时器。 2.基本定时器TIM…...

嵌入式※~MCU~LWIP~TCPS/HTTPS等

单片机MCU中的加密通道, 使用各种的加密通道, http / tcp / mqtt 等 可能不在重复发了 ~~ 请看链接吧~~~ 我自己的原文哦~ https://blog.51cto.com/whaosoft/11803802...

神经网络model训练时loss=nan【原因总结】

一、Loss functions 中含 F.log_softmax()函数 原因: 由于在计算log_softmax(x)时, 出现log(0)的情况。 解决方法: 给log_softmax的参数x添加一个很小的数: out=F.log_softmax(x+1e-10).二、loss_function(x)函数参数中出现nan 原因: 网络的生成features x 中含有nan. 解…...

【力扣 | SQL题 | 每日5题】力扣2362, 2356, 2394, 2480, 2388

1. 力扣2362&#xff1a;生成发票 1.1 题目&#xff1a; 表: Products ------------------- | Column Name | Type | ------------------- | product_id | int | | price | int | ------------------- product_id 包含唯一值。 该表中的每一行显示了一个产品的 ID …...

直播间“饕餮盛宴”的背后,是“他经济”正在冒头

最近&#xff0c;一个有意思的现象逐渐露出了苗头。 今年“双11”第一轮尾款开启支付的当晚&#xff0c;罗永浩的直播间上演了一出别样的“饕餮盛宴”。直播开场后&#xff0c;iphone16系列、可口可乐&#xff08;含糖、无糖300ml&#xff09;10秒售罄&#xff0c;索尼PS5、沃…...

盘点5款常用的环境部署工具

在现代软件开发中&#xff0c;环境部署工具扮演着重要角色&#xff0c;特别是在 PHP 开发和微服务架构中。本文将深入探讨几种主流的环境部署工具&#xff0c;包括 XAMPP、Servbay、MAMP、Laravel Herd 和 Docker&#xff0c;详细分析它们的特点、优缺点、适用场景及最佳实践&a…...

条码检测系统——基于MATLAB的一维条码识别

条码检测系统——基于MATLAB的一维条码识别 摘 要&#xff1a;条码技术是如今应用最广泛的识别和输入技术之一&#xff0c;由于其包含的信息量大&#xff0c;识别错误率低而在各个方面得到很大的重视。它发展迅速并被广泛应用于于工业、商业、图书出版、医疗卫生等各行各业。由…...

【Word原件测试资料合集】软件系统功能测试方案,软件测试方案(整体方案),软件测试文档-测试计划模版(功能与性能),软件测试流程

一、 前言 &#xff08;一&#xff09; 背景 &#xff08;二&#xff09; 目的 &#xff08;三&#xff09; 测试目标 &#xff08;四&#xff09; 适用范围与读者对象 &#xff08;五&#xff09; 术语与缩写 二、 软件测试实施流程 &#xff08;一&#xff09; 测试工作总体流…...

1024 程序员节 快乐

大家好&#xff0c;今天是2024-10-24 程序员节~~~~~~~~~祝你节日快乐&#xff0c;程序员&#xff01;哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦 喂~俺个炊饼~ 马飞~ 好了&#xff0c;该说…...

Java枚举类

1.枚举 1.1概述【理解】 为了间接的表示一些固定的值&#xff0c;Java就给我们提供了枚举 是指将变量的值一一列出来,变量的值只限于列举出来的值的范围内 1.2定义格式【应用】 格式 public enum s { 枚举项1,枚举项2,枚举项3; } 注意: 定义枚举类要用关键字enum 示例代…...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)

🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...

12.找到字符串中所有字母异位词

&#x1f9e0; 题目解析 题目描述&#xff1a; 给定两个字符串 s 和 p&#xff0c;找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义&#xff1a; 若两个字符串包含的字符种类和出现次数完全相同&#xff0c;顺序无所谓&#xff0c;则互为…...

k8s业务程序联调工具-KtConnect

概述 原理 工具作用是建立了一个从本地到集群的单向VPN&#xff0c;根据VPN原理&#xff0c;打通两个内网必然需要借助一个公共中继节点&#xff0c;ktconnect工具巧妙的利用k8s原生的portforward能力&#xff0c;简化了建立连接的过程&#xff0c;apiserver间接起到了中继节…...

uniapp中使用aixos 报错

问题&#xff1a; 在uniapp中使用aixos&#xff0c;运行后报如下错误&#xff1a; AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...

Map相关知识

数据结构 二叉树 二叉树&#xff0c;顾名思义&#xff0c;每个节点最多有两个“叉”&#xff0c;也就是两个子节点&#xff0c;分别是左子 节点和右子节点。不过&#xff0c;二叉树并不要求每个节点都有两个子节点&#xff0c;有的节点只 有左子节点&#xff0c;有的节点只有…...

是否存在路径(FIFOBB算法)

题目描述 一个具有 n 个顶点e条边的无向图&#xff0c;该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序&#xff0c;确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数&#xff0c;分别表示n 和 e 的值&#xff08;1…...

使用 SymPy 进行向量和矩阵的高级操作

在科学计算和工程领域&#xff0c;向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能&#xff0c;能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作&#xff0c;并通过具体…...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”

2025年#高考 将在近日拉开帷幕&#xff0c;#AI 监考一度冲上热搜。当AI深度融入高考&#xff0c;#时间同步 不再是辅助功能&#xff0c;而是决定AI监考系统成败的“生命线”。 AI亮相2025高考&#xff0c;40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕&#xff0c;江西、…...

如何在网页里填写 PDF 表格?

有时候&#xff0c;你可能希望用户能在你的网站上填写 PDF 表单。然而&#xff0c;这件事并不简单&#xff0c;因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件&#xff0c;但原生并不支持编辑或填写它们。更糟的是&#xff0c;如果你想收集表单数据&#xff…...

R语言速释制剂QBD解决方案之三

本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...