1
我需要处理一个事件,在小部件完全可见后像show after事件一样被触发。但是我在Qt4中找不到像这样的事件。我已经尝试了下面提出的解决方案。但他们都没有工作。Qt4 qwidget显示事件后
我的目标:我正在研究一个嵌入式系统,我正在使用Qt for UI。我想要做的是在显示CustomWidget后在UI上显示硬件加速摄像头。如果我使用showEvent,则会在CustomWidget完全绘制之前显示相机。 似乎showEvent在小部件完全绘制之前触发。它的行为与之前的show事件相似。
故障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();
}
showevent不起作用。请阅读问题的第二段。如果不明确,请通知我,我会澄清我的陈述。 – haitaka 2014-09-22 13:06:38
'camera'是否继承'QWidget'?是'相机'能够刷新自己?如果两个答案都是真的,也许你可以简单地增加'QTime :: singleShot'方法的偏移量。 – eferion 2014-09-22 13:53:21
相机不会继承QWidget。这是一个基于gstreamer的课程。如果我增加QTime :: singleShot的偏移量,它肯定能解决我的问题。但这不是一个好的解决方案。我的应用程序中有很多小部件,在这些小部件之间切换需要不同的时间。所以我必须找到最耗时的开关操作,并将此值设置为singleShot方法的偏移量。这绝对不是一个好的解决方案。 – haitaka 2014-09-22 14:01:40