问题更改Qwidget的标志



我在应用程序中有一个qwidget作为另一个孩子。该任务包括将内部小部件置于全屏模式,并能够以相同的按钮再次以正常模式看到它。这部分我设法以下面的方式进行:

if(!isFullScreen())
{
   setWindowFlags(windowFlags() | Qt::Window);
   showFullScreen();
}
else
{
   setWindowFlags(windowFlags() & ~Qt::Window);
   showNormal();
   activateWindow();
}

当您返回以正常模式查看小部件时,出现了问题。发生的事情:

  • 鼠标光标与指向手光标保持在一起。
  • 更改模式的按钮保持在悬停状态(鼠标结束后的背景颜色会更改(

  • 将鼠标传递到其他小部件控件不会改变其外观

我必须单击小部件以修复行为。好像小部件没有收到任何类型的事件或类似的事件。我尝试调用setFocus((,但它不起作用。我还试图通过以下方式手动发送活动,但也没有起作用:

QMouseEvent my_event(QEvent::MouseButtonPress, QPointF (0, 0), Qt :: NoButton, 0, 0);
QApplication::sendEvent(this, & my_event);

有什么想法?

谢谢。

无法使用qt5.9.4。

在xubuntu上重现您的问题

但是,我在上一份工作中也做了同样的事情,并且在所有平台上都可以正常工作。我认为是这样的:

if(!isFullScreen())
{
    setParent(0);
    showFullScreen();
}
else
{
    orignalParentLayout->addWidget(this); // better: insert at correct position
    showNormal();
}

为此,您必须添加有关父母布局的知识。您可以在进入全屏模式之前尝试检测该信息,但这可能不值得。

您也可以尝试:

if(!isFullScreen())
{
    logicalParent = parentWidget();
    setParent(0);
    showFullScreen();
}
else
{
    setParent(logicalParent);
    showNormal();
}

如果您没有布局。您可能还需要在全屏之前存储几何形状。

相关内容

  • 没有找到相关文章

最新更新