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 如何置顶窗口并激活
基本上,客户端软件都会有置顶某个窗口的需求。置顶窗口激活窗口,两者不是同一个问题。有时候窗口置顶了,并不代表该窗口属于激活状态。本文将尝试把这两个问题一起解决了,请看下文: 一、置顶窗口 通过函数setWindowF…...
嵌入式面试刷题(day19)
Makefile和Cmake的区别 Makefile 和 CMake 都是用于构建和管理软件项目的工具,但它们有不同的设计理念和使用方式。以下是二者的主要区别: 1. 概念和工作原理 Makefile: Makefile 是 make 工具的配置文件,定义了如何编译和链接程序。它基于文件的时间戳,使用规则(规则指…...

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

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

pytorch的标签平滑介绍
什么是标签平滑(Label Smoothing)? 标签平滑(Label Smoothing)是一种正则化技术,旨在防止模型过度自信(即输出的概率分布过于“尖锐”)。在分类任务中,标准的目标标签是one-hot编码,也就是正确类别的概率为 1,其他类别的概率为 0。而标签平滑通过将正确类别的概率从…...
CTE 与存储过程:SQL 查询简化与复杂业务逻辑处理的最佳选择
CTE(Common Table Expression,公共表表达式)和存储过程是两种不同的SQL工具,分别用于解决不同的问题。它们各有优缺点,适用于不同的场景。让我们从以下几个方面来比较它们: 1. 定义与作用 CTE:…...
mysql delete命令操作后,数据库文件大小并未变化,该怎么解决?
在 MySQL 中,使用 DELETE 命令删除数据后,数据表的大小可能不会立即减小,因为 MySQL 并不总是立即回收已删除数据所占用的空间。这是因为 MySQL 的存储引擎(如 InnoDB)可能会保留这些空间以备将来插入新数据时使用&…...
GitLab 发布安全补丁版本 17.3.2, 17.2.5, 17.1.7
本分分享极狐GitLab 补丁版本 17.4.2, 17.3.5, 17.2.9 的详细内容。这几个版本包含重要的缺陷和安全修复代码,我们强烈建议所有私有化部署用户应该立即升级到上述的某一个版本。对于极狐GitLab SaaS,技术团队已经进行了升级,无需用户采取任何…...
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创新方法培训值得去吗?
面对日益复杂的市场环境和竞争态势,掌握有效的创新方法不仅关乎企业的生死存亡,也直接关系到个人的职业成长与竞争力。TRIZ作为一种系统化的创新方法论,其培训课程正逐渐受到企业和个人的广泛关注。那么,TRIZ创新方法培训究竟值得…...

STM32之基本定时器TIM6和TIM7
1.定时器概念和作用 在编程任务中,定时器是非常常用的一个问题。当需要定时发送数据,定时起某个任务,定时做某个操作等等,这些都离不开定时器。本文基于以STM32F4xx系列开发板,介绍一下基本定时器。 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:生成发票 1.1 题目: 表: Products ------------------- | Column Name | Type | ------------------- | product_id | int | | price | int | ------------------- product_id 包含唯一值。 该表中的每一行显示了一个产品的 ID …...

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

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

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

【Word原件测试资料合集】软件系统功能测试方案,软件测试方案(整体方案),软件测试文档-测试计划模版(功能与性能),软件测试流程
一、 前言 (一) 背景 (二) 目的 (三) 测试目标 (四) 适用范围与读者对象 (五) 术语与缩写 二、 软件测试实施流程 (一) 测试工作总体流…...
1024 程序员节 快乐
大家好,今天是2024-10-24 程序员节~~~~~~~~~祝你节日快乐,程序员!哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦 喂~俺个炊饼~ 马飞~ 好了,该说…...
Java枚举类
1.枚举 1.1概述【理解】 为了间接的表示一些固定的值,Java就给我们提供了枚举 是指将变量的值一一列出来,变量的值只限于列举出来的值的范围内 1.2定义格式【应用】 格式 public enum s { 枚举项1,枚举项2,枚举项3; } 注意: 定义枚举类要用关键字enum 示例代…...
在软件开发中正确使用MySQL日期时间类型的深度解析
在日常软件开发场景中,时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志,到供应链系统的物流节点时间戳,时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库,其日期时间类型的…...

云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地
借阿里云中企出海大会的东风,以**「云启出海,智联未来|打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办,现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...

解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八
现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet,点击确认后如下提示 最终上报fail 解决方法 内核升级导致,需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...
Leetcode 3577. Count the Number of Computer Unlocking Permutations
Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接:3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯,要想要能够将所有的电脑解锁&#x…...
【论文笔记】若干矿井粉尘检测算法概述
总的来说,传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度,通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...

跨链模式:多链互操作架构与性能扩展方案
跨链模式:多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈:模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展(H2Cross架构): 适配层…...

如何将联系人从 iPhone 转移到 Android
从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...
【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验
系列回顾: 在上一篇中,我们成功地为应用集成了数据库,并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了!但是,如果你仔细审视那些 API,会发现它们还很“粗糙”:有…...

12.找到字符串中所有字母异位词
🧠 题目解析 题目描述: 给定两个字符串 s 和 p,找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义: 若两个字符串包含的字符种类和出现次数完全相同,顺序无所谓,则互为…...
06 Deep learning神经网络编程基础 激活函数 --吴恩达
深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...