我有一个实例化QWidget子类的QMainWindow。我想用远程数据填充我的子类,所以我想阻止QWidget::show()插槽,忽略它并发出请求,然后真正显示子类小部件。
我重新实现了showEvent(QShowEvent *),并让它忽略了这个事件,一个qDebug()向我展示了它是有效的,被忽略了,但仍然显示了这个小部件。
我错过了什么?谢谢你的帮助。
子类:
void Groups_Materials::showEvent(QShowEvent *event)
{
event->ignore();
qDebug() << "Event accepted: " << event->isAccepted(); // Return: false
}如何命名:
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
发布于 2012-12-31 01:00:43
添加«event-> returns ()»,如果返回«true»,则无法
窗口的自发显示事件是在之后发送的。
只需在QWidget子类上调用«hide()»,这样它就不会显示,除非您自己调用«show()»。
发布于 2012-12-31 23:18:05
我得到了一个单独的答案...我使用的是"Qt::Sheet“标志,这似乎会使它失败。我在Mac上,也许它可以在Win/Linux上工作:Qt-Forum
https://stackoverflow.com/questions/14091158
复制相似问题