我需要处理在窗口小部件完全可见之后触发的事件,就像在show事件之后一样。但我在Qt4中找不到类似的事件。我已经尝试了下面建议的解决方案。但他们都没有工作。
我的目标:我正在使用嵌入式系统,我正在使用Qt for UI。我想要做的是在显示CustomWidget后在UI上显示硬件加速相机。如果我使用showEvent,则会在完全绘制CustomWidget之前显示相机。 似乎在完全绘制窗口小部件之前触发了showEvent。它的行为与show event之前的行为相同。
bool CustomWidget::event(QEvent *event)
{
bool returnValue = QWidget::event(event);
if (event->type() == QEvent::Polish)
{
this->camera->show();
}
return returnValue;
}
波兰事件被召唤一次。当我隐藏并一次又一次地显示小部件时,它从未被解雇。
void CustomWidget::showEvent(QShowEvent *event)
{
QWidget::showEvent(event);
QTimer::singleShot(0, this, SLOT(dialogExec));
}
void CustomWidget::dialogExec()
{
this->camera->show();
}
这也不起作用。
void CustomWidget::paintEvent( QPaintEvent *event )
{
QWidget::paintEvent( event );
if( !this->camera->isVisible() )
{
this->camera->show();
}
}
void CustomWidget::hideEvent( QHideEvent *event )
{
this->camera->hide();
}
答案 0 :(得分:0)
QWidget
已保护名为closeEvent( QCloseEvent* event )
和showEvent( QShowEvent* event )
的成员。也许您可以使用这些方法来管理相机。