如何显示/隐藏Qt窗口边框

时间:2014-08-12 19:20:54

标签: c++ qt

我在Qt对话框自定义方面遇到问题。该对话框包含一个图像(带有像素图的QLabel)和一个带有按钮的面板。默认情况下,对话框没有标题栏和边框,面板不可见。 当我单击显示的图像时,面板变为可见,边框也应该可见,以便用户可以调整对话框的大小。

将面板设置为可见或不可见很容易,并且在开头隐藏边框也很清楚:

setWindowFlags(Qt :: Dialog | Qt :: FramelessWindowHint);

BUT

我无法恢复窗口的边框。我试过这个:

// this is in the header

Qt::WindowFlags m_wndFlags;

// this is in the cpp

dlgImageWindow::dlgImageWindow()
{
   Qt::WindowFlags m_wndFlags = windowFlags();

   setWindowFlags( Qt::Dialog | Qt::FramelessWindowHint );
}

... // border is hidden

void dlgImageWindow::_showBorder()
{
  setWindowFlags( m_wndFlags );
}

不幸的是,结果是整个对话框消失了。 有什么想法吗?

2 个答案:

答案 0 :(得分:0)

可能是因为你使用

Qt::WindowFlags m_wndFlags = windowFlags();

将当前窗口标志分配给语言环境变量,this->m_wndFlags永远不会设置正确

答案 1 :(得分:0)

Zaiborg:谢谢你的回答。实际上上面的代码有点简化,仅供参考实际代码。

问题是当我使用setWindowFlags()程序时窗口消失了。

在评论'timday'中链接了另一个会话,其中类似的问题通过在setWindowFlags()之后调用show()过程来解决和解决。

在我使用show()程序后,我发现我的过程按规范工作。