news 2026/6/10 19:25:26

Qt 中将 QWidget 改为模态的方法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Qt 中将 QWidget 改为模态的方法

方法1:使用setWindowModality()

// 设置为应用程序模态(阻止与所有窗口交互) widget->setWindowModality(Qt::ApplicationModal); // 设置为窗口模态(只阻止与父窗口交互) widget->setWindowModality(Qt::WindowModal); // 设置为非模态 widget->setWindowModality(Qt::NonModal); // 示例 QWidget* modalWidget = new QWidget(); modalWidget->setWindowModality(Qt::ApplicationModal); modalWidget->show();

方法2:使用exec()方法(像 QDialog 一样)

// 自定义 QWidget 子类,添加 exec() 方法 class ModalWidget : public QWidget { Q_OBJECT public: ModalWidget(QWidget* parent = nullptr) : QWidget(parent) { setWindowFlags(Qt::Dialog); setWindowModality(Qt::ApplicationModal); } int exec() { show(); m_eventLoop.exec(); return m_result; } public slots: void accept() { m_result = QDialog::Accepted; close(); } void reject() { m_result = QDialog::Rejected; close(); } protected: void closeEvent(QCloseEvent* event) override { m_eventLoop.quit(); QWidget::closeEvent(event); } private: QEventLoop m_eventLoop; int m_result = QDialog::Rejected; }; // 使用 ModalWidget* widget = new ModalWidget(); if (widget->exec() == QDialog::Accepted) { qDebug() << "用户接受了"; }

方法3:使用setWindowModality+QEventLoop

FormVideoSnap *widget = new FormVideoSnap(nullptr); widget->setWindowModality(Qt::ApplicationModal); widget->setAttribute(Qt::WA_DeleteOnClose); QEventLoop loop; // 连接自定义aboutToClose 信号 QObject::connect(widget, &FormVideoSnap::aboutToClose, [this](const QString& filePath) { m_lastSnapshotFilePath = filePath; }); QObject::connect(widget, &FormVideoSnap::destroyed, &loop, &QEventLoop::quit); widget->show(); loop.exec(); // 阻塞直到窗口关闭
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 14:54:58

3P游戏动作为何总对不上位移?

你在玩第三人称(3P)射击 / 动作游戏时, 一定见过这种“违和感爆表”的画面: 敌人明明在狂奔,腿跑得飞快,整个人却像在慢动作滑行 模型已经一脚迈出去了,判定还当他站在原地 你看见对面刚停下,马上抬枪瞄他,结果他在你眼里还在跑步动画 有的人“脚下踩着风火轮”,位移…

作者头像 李华
网站建设 2026/6/10 14:52:46

D365 CE Power Platform 编程系列 (8):JS编程之客户端实体

今天我们来看看怎么针对不同类型的字段构造Javascript对象&#xff0c;并在表单js里面对他们进行更新操作。下图是我们为了今天的测试创建的字段&#xff0c;名称代表了它的字段类型&#xff1a;接下来我们通过如下JS代码对这些字段进行赋值操作&#xff1a;Form_onsave:functi…

作者头像 李华
网站建设 2026/6/10 14:52:59

构建高效任务中心:CDC 数据同步的工程实践与架构权衡

构建高效任务中心&#xff1a;CDC 数据同步的工程实践与架构权衡 在现代业务系统中&#xff0c;任务中心&#xff08;Task Center&#xff09;作为连接数据与行动的核心枢纽&#xff0c;其核心能力之一是从上游业务数据库中可靠、高效、低延迟地同步关键状态变更&#xff0c;并…

作者头像 李华
网站建设 2026/6/10 16:04:48

自动化测试报告设计分享

在软件质量保障体系中&#xff0c;自动化测试已成为不可或缺的环节。然而&#xff0c;测试的价值不仅在于执行过程&#xff0c;更在于结果的呈现与分析。一份精心设计的自动化测试报告&#xff0c;能够将复杂的测试数据转化为有价值的洞察&#xff0c;帮助团队快速定位问题、评…

作者头像 李华
网站建设 2026/6/10 19:16:21

中国刺绣文化网站作品阐释

一、设计过程1. 需求分析与概念设计在设计中国刺绣文化网站之初&#xff0c;进行了详尽的市场调研和需求分析。中国刺绣文化源远流长&#xff0c;拥有深厚的文化底蕴和广泛的受众基础。然而&#xff0c;随着现代生活节奏的加快&#xff0c;传统刺绣文化的传播和普及面临诸多挑战…

作者头像 李华