【发布时间】:2014-08-12 19:20:54
【问题描述】:
我有一个 Qt 对话框自定义的问题。该对话框包含一个图像(带有像素图的 QLabel)和一个带有按钮的面板。默认情况下,对话框没有标题栏和边框,面板不可见。 当我单击显示的图像时,面板变得可见,并且边框也应该可见,以便用户可以调整对话框的大小。
设置面板可见或不可见很容易,隐藏开头的边框也很清楚:
setWindowFlags(Qt::Dialog | Qt::FramelessWindowHint);
但是
我无法恢复窗口的边框。我试过这个:
// 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 );
}
不幸的是,整个对话框都消失了。 有什么想法吗?
【问题讨论】:
-
实际上我的问题通过添加 'show();' 解决了'setWindowFlags...' 过程之后的行。我不知道为什么 setWindowFlags 隐藏了整个窗口,但确实如此。实际上,上面的代码可以按预期恢复边框,并且通过显示过程,窗口仍然可见。
-
是的……谢谢 timday! “此函数在更改窗口的标志时调用 setParent(),导致小部件被隐藏。您必须调用 show() 才能使小部件再次可见..”