首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用QWidget::showEvent()阻止QWidget::show()

如何使用QWidget::showEvent()阻止QWidget::show()
EN

Stack Overflow用户
提问于 2012-12-30 21:37:50
回答 2查看 1.9K关注 0票数 1

我有一个实例化QWidget子类的QMainWindow。我想用远程数据填充我的子类,所以我想阻止QWidget::show()插槽,忽略它并发出请求,然后真正显示子类小部件。

我重新实现了showEvent(QShowEvent *),并让它忽略了这个事件,一个qDebug()向我展示了它是有效的,被忽略了,但仍然显示了这个小部件。

我错过了什么?谢谢你的帮助。

子类:

代码语言:javascript
复制
void Groups_Materials::showEvent(QShowEvent *event)
{
 event->ignore();
 qDebug() << "Event accepted: " << event->isAccepted(); // Return: false
}

如何命名:

代码语言:javascript
复制
this->m_groupsMaterialsWidget = new Groups_Materials(this->m_parent);
this->m_groupsMaterialsWidget->setWindowModality(Qt::ApplicationModal);
this->m_groupsMaterialsWidget->setAttribute(Qt::WA_DeleteOnClose);
this->m_groupsMaterialsWidget->show();

调用这些方法时在控制台中编写的内容:Event accepted: false

EN

回答 2

Stack Overflow用户

发布于 2012-12-31 01:00:43

添加«event-> returns ()»,如果返回«true»,则无法

窗口的自发显示事件是在之后发送的。

只需在QWidget子类上调用«hide()»,这样它就不会显示,除非您自己调用«show()»。

票数 1
EN

Stack Overflow用户

发布于 2012-12-31 23:18:05

我得到了一个单独的答案...我使用的是"Qt::Sheet“标志,这似乎会使它失败。我在Mac上,也许它可以在Win/Linux上工作:Qt-Forum

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14091158

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档