我有一个QMainWindow
来实例化一个QWidget子类。我想用远程数据填充我的子类,所以我想阻止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
答案 0 :(得分:1)
添加«event-&gt; spontaneous()»,如果它返回«true»,你就是不能
随后发布了窗户的自发展示事件。
只需在你的QWidget子类上调用«hide()»,这样除非你自己调用«show()»,否则不会显示它。
答案 1 :(得分:0)
我单独得到一个答案......我正在使用“Qt :: Sheet”标志,这似乎使它失败了。 我在Mac上,也许它适用于Win / Linux:Qt-Forum