C++ 显示事件后的Qt4 qwidget

C++ 显示事件后的Qt4 qwidget,c++,qt,qt4,C++,Qt,Qt4,我需要处理一个事件,该事件是在小部件完全可见之后触发的,就像在显示事件之后一样。但我在Qt4中找不到类似的事件。我已经尝试了下面建议的解决方案。但没有一个成功 我的目标:我在一个嵌入式系统上工作,我正在使用Qt进行UI。我想做的是在显示CustomWidget之后在UI上显示硬件加速的摄像头。如果我使用showEvent,则在完全绘制CustomWidget之前会显示摄像头。 似乎showEvent是在小部件完全绘制之前触发的。它的行为与展会活动前类似 故障-1 波兰的活动只举行一次。当我一次又

我需要处理一个事件,该事件是在小部件完全可见之后触发的,就像在显示事件之后一样。但我在Qt4中找不到类似的事件。我已经尝试了下面建议的解决方案。但没有一个成功

我的目标:我在一个嵌入式系统上工作,我正在使用Qt进行UI。我想做的是在显示CustomWidget之后在UI上显示硬件加速的摄像头。如果我使用showEvent,则在完全绘制CustomWidget之前会显示摄像头。 似乎showEvent是在小部件完全绘制之前触发的。它的行为与展会活动前类似

故障-1 波兰的活动只举行一次。当我一次又一次地隐藏和显示小部件时,它从未启动

故障-2 这也不管用

故障-3
QWidget具有名为closeEvent QCCloseEvent*事件和showEvent QShowEvent*事件的受保护成员。也许您可以使用这些方法来管理相机。

showevent不起作用。请读问题的第二段。如果不清楚,请通知我,我将澄清我的陈述。相机是否继承QWidget?相机能自动刷新吗?如果两个答案都是真的,也许你可以简单地增加QTime::singleShot方法的偏移量。它是一个基于gstreamer的类。如果我增加QTime::singleShot的偏移量,它肯定会解决我的问题。但这不是一个好的解决方案。我的应用程序中有很多小部件,在这些小部件之间切换需要不同的时间。因此,我必须找到最耗时的开关操作,并将该值作为singleShot方法的偏移量。这绝对不是一个好的解决方案。如果需要在对话框完全绘制时显示相机,则需要重载QDialog::paintEvent方法。也许您可以在paintEvent完成时发出一个信号,并使用显示相机的方法连接该信号。void CustomDialog::paintEvent QPaintEvent*event{QDialog::paintEvent event;emit dialogPainted;}我已经做过了。见故障-3。我没有发出信号,而是调用了camera实例的show方法。我不认为仅仅改变代码来发出信号就能解决我的问题。
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();
}