qt 实现窗口置顶,qtdesigner创建的widget窗口集成程序里的用法

news/2025/1/10 15:00:57/文章来源:https://www.cnblogs.com/RYSBlog/p/18664006

参考 https://blog.csdn.net/Larry_Yanan/article/details/123518788

.ui文件如下


新建的ui文件,编译一下就会生成对应的 ui_xxx.h 文件,文件内就有对应的 namespace Ui 声明的变量,这个变量要在mainwindow.h中声明,然后在mainwindow.cpp中new出来,具体使用如下

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>
#include <QWidget>namespace Ui {
class MainWindow;
class page_pdo;
class page_param;
}class MainWindow : public QMainWindow
{Q_OBJECTpublic:explicit MainWindow(QWidget *parent = 0);~MainWindow();private:Ui::MainWindow *ui;Ui::page_param *ui_page_param;Ui::page_pdo *ui_page_pdo;QWidget *parent_page_pdo;QWidget *parent_page_param;QWidget *parent_active=nullptr;
};#endif // MAINWINDOW_H

mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "ui_page_pdo.h"
#include "ui_page_param.h"#include <QTimer>
#include <QDebug>
MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow)
{ui->setupUi(this);parent_page_pdo=new QWidget();parent_page_param=new QWidget();ui_page_param=new Ui::page_param;ui_page_pdo=new Ui::page_pdo;ui_page_param->setupUi(parent_page_param);ui_page_pdo->setupUi(parent_page_pdo);parent_page_pdo->setWindowTitle("parent_page_pdo");parent_page_param->setWindowTitle("parent_page_param");parent_page_param->setWindowFlags(Qt::Dialog | Qt::WindowStaysOnTopHint);//这种方式主界面还能编辑,加上主界面disable和定时监测,结合定时器监测可以实现警告提示parent_page_pdo->setWindowFlags(Qt::Dialog | Qt::WindowStaysOnTopHint);
//    parent_page_param->setWindowModality(Qt::ApplicationModal);//这种方式,主界面无法修改,可以实现基本功能,但是无法实现警告提示
//    parent_page_pdo->setWindowModality(Qt::ApplicationModal);connect(ui->btn_skip_page_param,&QPushButton::clicked,this,[=]() mutable{if(parent_active)parent_active->hide();parent_page_param->show();parent_active=parent_page_param;this->setEnabled(false);//this->setWindowOpacity(0.5); // 设置窗口半透明});connect(ui->btn_skip_page_pdo,&QPushButton::clicked,this,[=]() mutable{if(parent_active)parent_active->hide();parent_page_pdo->show();parent_active=parent_page_pdo;this->setEnabled(false);});parent_active=nullptr;connect(ui_page_pdo->btn_cancel,&QPushButton::clicked,this,[=]() mutable{ this->setEnabled(true);parent_active=nullptr;parent_page_pdo->hide();qDebug() <<ui_page_pdo->data_1->text(); });connect(ui_page_pdo->btn_ok,&QPushButton::clicked,this,[=]() mutable{ this->setEnabled(true);parent_active=nullptr;parent_page_pdo->hide();qDebug() << ui_page_pdo->data_1->text(); });connect(ui_page_param->btn_cancel,&QPushButton::clicked,this,[=]() mutable{ this->setEnabled(true);parent_active=nullptr;parent_page_param->hide();qDebug() << ui_page_param->data_1->text(); });connect(ui_page_param->btn_ok,&QPushButton::clicked,this,[=]() mutable{ this->setEnabled(true);parent_active=nullptr;parent_page_param->hide();qDebug() << ui_page_param->data_1->text(); });QTimer* timerSendAnimCAN = new QTimer(this);connect(timerSendAnimCAN,&QTimer::timeout,this,[=]() mutable{QWidget *activeWindow = QApplication::activeWindow();if (activeWindow) { qDebug() << "Active window:" << activeWindow->windowTitle(); }if(parent_active){if (activeWindow==parent_active) {parent_active->setStyleSheet("");}else {QString res=QString("#%1{%2}").arg(parent_active->objectName()).arg("border:2 solid red;");parent_active->setStyleSheet(res);}}});timerSendAnimCAN->setTimerType(Qt::PreciseTimer);timerSendAnimCAN->start(100);
}MainWindow::~MainWindow()
{delete ui;
}

运行效果

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

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

相关文章

如何在市场推广活动中实现精准的任务分配?5个项目管理技巧

一、引言 随着市场竞争的加剧和消费者需求的多样化,企业对市场推广活动的要求越来越高。市场推广活动不仅需要创意和精准的目标定位,还需要高效的执行和完善的管理。在这种背景下,如何通过有效的活动管理来提升推广活动的执行力,已成为市场团队面临的一个巨大挑战。 市场推…

Android编译 - 证书介绍

前言全局说明一、说明 1.1 环境: Android1.2 简介 在Android系统中,每个APK文件必须有一个有效的数字证书来证明其来源和完整性。当需要修改APK后再次发布时,原有的签名将不再有效,因此需要重新签名。二、证书工具 2.1 路径: android/build/tools/releasetools/sign_target…

域名解析的QPS防护值是什么?

在当今数字化的时代,互联网已经渗透到生活的方方面面,而域名解析作为互联网运行的关键环节之一,起着至关重要的作用。其中,域名解析的QPS防护值更是保障网络稳定、安全与高效的一个重要指标。 一、QPS 防护值的定义与内涵 QPS,即Queries Per Second,意为每秒查询次数。域…

远程开机详细教程

要实现远程开机,被控端必须满足以下条件: 1.目前仅支持windows系统实现远程开机 2.被控端所在局域网内,需要有另一台设备保持todesk在线 如:其他电脑、iPhone、iPad、Android 设备(手机、平板)、家人的手机(充当辅助开机设备) 如图,辅助开机设备需显示在线,离线状态无法发…

CH585的SPI驱动WS2812

目录 链接: https://pan.baidu.com/s/1Su5dgmVWLre5kH2fYiGwQQ?pwd=wch6 CH573系列/583系列/592系列MCU,在使用SPI模拟WS2812波形时,MISO-PA15引脚上的实时电平,会影响MOSI-PA14引脚上的空闲电平状态,故建议SPI驱动WS2812的场景下,固定PA15的电平,不要接其他外设。异常场…

企业微信客服系统-实现对接微信客服接口与分配客服功能-实现GPT回复功能

企业微信客服是有对外的接口的,可以将用户发过来的消息传递给我们系统(注意,这里说的是企业微信客服,不是企业微信员工,也不是个人微信,这三个不是一回事)。并且,我们系统还可以实现,多个微信客服入口,分配到多个我们客服坐席,客服不在线时,可以分配给别人。微信客…

异地多活架构如何设计:活好你也好【转】

异地多活是分布式系统架构设计的一座高峰,当业务系统走到需要考虑异地多活这一步,其体量和复杂度都会达到很高的水准。接入层、逻辑层、数据层的三层架构,基本上是每个业务都会拥有的基础架构形态,而三层架构的关键在于数据层,本文将从数据层切入探讨异地多活对于基础架构…

一文告诉你什么是WBS——附应用方案

通过这些,结合板栗看板使用WBS可以极大地提高项目管理的效率和透明度,确保项目按时完成并达到预期目标。一、定义与原理 WBS(Work Breakdown Structure),即工作分解结构,是一种项目管理方法,它将一个复杂的项目或任务按照一定的原则分解成更小、更具体的部分,以便于管理…

思维导图xmind如何安装?附安装包

前言 大家好,我是小徐啊。我们在Java开发中,有时候是需要用到思维导图的,这可以帮助我们更好的理清思路,提高开发的效率。而说到思维导图,最有名的就是xmind了,它的功能十分强大,几乎是思维导图里面最强大的那一个。但是,默认只能使用初级功能,高级功能需要额外再开通…

网络是怎样连接的PDF免费下载

计算机网络概论图解趣味版,计算机网络基础,程序是怎样跑起来的,计算机是怎样跑起来的姊妹篇,Wireshark网络分析就这么简单作者林沛满作序推荐日文版重印32次。本书以探索之旅的形式,从在浏览器中输入网址开始,一路追踪了到显示出网页内容为止的整个过程,以图配文,讲解了…