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

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(); // 阻塞直到窗口关闭
http://www.zskr.cn/news/159121.html

相关文章:

  • 2025年6款AI论文工具实测:10分钟生成万字问卷类论文+真实参考文献,高效搞定学术写作!
  • 2025年12月江苏徐州别墅庭院设计、屋顶花园设计、公园绿地设计、市政广场设计、生态园区设计服务商权威测评与综合推荐 - 2025年品牌推荐榜
  • 【路径规划】基于RRT快速探索随机树算法在三维环境中寻找从起点到目标点的路径,并对路径进行平滑处理附Matlab代码
  • AgentRun:如何利用 AI Agent 构建现代化的舆情分析解决方案?
  • 【论道】组件封装原则
  • 【商业摄影必读】告别“灰墙战神”!PS 2025 AI 重新定义人像环境合成(附光影融合秘籍)
  • 郑州家装公司五大推荐:优质装修/别墅装修/老房翻新精选,华埔装饰砸无赦承诺引领行业新风尚 - 深度智识库
  • 高精度光学动作捕捉如何为无人机提供飞行姿态与轨迹真值?——以IROS 2025多篇无人机学习与控制研究为例
  • 让回忆“动”起来:手把手教你制作老照片动态视频
  • 基于Spring Boot和Vue.js的房屋出租管理系统设计与实现
  • 基于结构特征与神经网络特征融合的手写汉字评价模型研究
  • 深耕用户体验,「呵汤」年度会员聚会举办在即 - 资讯焦点
  • 2025年亚麻油灌装机厂家实力推荐:大豆油灌装机/导热油灌装机/机油灌装机源头厂家精选 - 品牌推荐官
  • 2025年内浮盘厂家权威推荐榜:油罐内浮盘/储罐内浮盘/不锈钢内浮盘源头厂家精选 - 品牌推荐官
  • 2025年脱硝喷射器厂家实力推荐:衬四氟喷射器/消石灰喷射器/酸碱喷射器源头厂家精选 - 品牌推荐官
  • 自动化测试报告设计分享
  • 2025品牌咨询全案公司哪家专业:120工具+56模块防坑指南 - 品牌排行榜
  • 自动化测试如何生成测试问题清单
  • 2026 十大高清免费版权图片素材下载网站推荐,合规商用冲! - 品牌2026
  • 开学第一课,打印Hello World!
  • 2025年12月铁铜添加剂/铝基中间合金/公司专业推荐 - 2025年品牌推荐榜
  • 上海铜箔制造企业综合实力榜(2025选型指南)——军工级定制与快速交付视角 - 品牌排行榜
  • 2025年市场知名的横梁货架厂商推荐榜,阁楼货架/仓储货架/货架/重型货架/穿梭式货架,横梁货架直销厂家口碑推荐 - 品牌推荐师
  • 常用zip命令
  • 互联网大厂面试攻略:Java小白如何应对微服务与云原生技术
  • indent and unindent in vscode and its descendant when tab/shift-tab not work
  • 2026 十大图库推荐:找可下载图片素材的靠谱平台清单 - 品牌2026
  • 2025专科生必看!9个AI论文工具测评,写毕业论文不再难
  • 七载同行共铸卓越,利尔达展芯荣膺纳芯微“风雨同舟奖”!
  • 超低温机组哪个厂家好?2025超低温机组制造商推荐,为选型提供权威参考 - 品牌推荐大师1