在OS X(Yosemite)上,QWidget不会以全屏模式关闭

时间:2015-03-06 05:11:22

标签: c++ macos qt user-interface

我有一个QWidget的子类,我正在尝试修复一个错误,它使用QWidget :: hide()或close()方法无法以编程方式隐藏/关闭它所在的窗口。

以下是我尝试过的一些事情:

if(widget->isFullScreen())
{
    widget->showNormal();   //Makes the window normal-sized before closing it
    widget->hide();
}

这是我尝试过的另一种方式:

if(widget->isFullScreen())
{
    widget->setWindowState(Qt::WindowMinimized);
    widget->hide();
}

我还尝试设置插槽/信号系统:

if(netcam->isFullScreen())
{
    connect(this, SIGNAL(fullScreenExited()),
            this, SLOT(onFullScreenExited()));

    widget->showNormal();
    this->fullScreenExited(); //just hides the widget (or closes it) 

}
else
{
    widget->hide();
}

每次结果都是窗户冻结,必须用手关闭。我怀疑第一个showNormal()是异步发生的,第二个close()/ hide()永远不会成功执行。

我也试过这个,希望在继续hide()/ close()之前完成showNormal():

if(widget->isFullScreen())
    {
        widget->showNormal();
        QApplication::processEvents();
        widget->hide();
    }

主要问题: 有没有人对如何处理从Qt代码关闭全屏QWidget有任何建议?

可能有帮助的问题: 有没有办法确保事情同步运行?

谢谢!

编辑: 我使用它的唯一方法是在进程中进一步调用showNormal(),这可以防止执行showNormal()和hide()时出现重叠。我会记得稍后回来并给出一个常规QWidget的基本示例。

我还应该补充说,使用+(全屏)按钮将窗口置于全屏状态,该按钮位于OS X中每个窗口的顶部。

0 个答案:

没有答案