显示事件后的Qt4 qwidget

时间:2014-09-22 12:52:41

标签: c++ qt qt4

我需要处理在窗口小部件完全可见之后触发的事件,就像在show事件之后一样。但我在Qt4中找不到类似的事件。我已经尝试了下面建议的解决方案。但他们都没有工作。

我的目标:我正在使用嵌入式系统,我正在使用Qt for UI。我想要做的是在显示CustomWidget后在UI上显示硬件加速相机。如果我使用showEvent,则会在完全绘制CustomWidget之前显示相机。 似乎在完全绘制窗口小部件之前触发了showEvent。它的行为与show event之前的行为相同。

故障-1

bool CustomWidget::event(QEvent *event)
{
   bool returnValue = QWidget::event(event);
   if (event->type() == QEvent::Polish)
   {
       this->camera->show();
   }
   return returnValue;
}

波兰事件被召唤一次。当我隐藏并一次又一次地显示小部件时,它从未被解雇。

故障-2

void CustomWidget::showEvent(QShowEvent *event)
{
    QWidget::showEvent(event);
    QTimer::singleShot(0, this, SLOT(dialogExec));
}

void CustomWidget::dialogExec()
{
    this->camera->show();
}

这也不起作用。

故障-3

void CustomWidget::paintEvent( QPaintEvent *event )
{
   QWidget::paintEvent( event );

   if( !this->camera->isVisible() )
   {
       this->camera->show();
   }
}

void CustomWidget::hideEvent( QHideEvent *event )
{
   this->camera->hide();
}

1 个答案:

答案 0 :(得分:0)

QWidget已保护名为closeEvent( QCloseEvent* event )showEvent( QShowEvent* event )的成员。也许您可以使用这些方法来管理相机。