我在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 );
}
不幸的是,结果是整个对话框消失了。 有什么想法吗?
答案 0 :(得分:0)
可能是因为你使用
Qt::WindowFlags m_wndFlags = windowFlags();
将当前窗口标志分配给语言环境变量,this->m_wndFlags
永远不会设置正确
答案 1 :(得分:0)
Zaiborg:谢谢你的回答。实际上上面的代码有点简化,仅供参考实际代码。
问题是当我使用setWindowFlags()程序时窗口消失了。
在评论'timday'中链接了另一个会话,其中类似的问题通过在setWindowFlags()之后调用show()过程来解决和解决。
在我使用show()程序后,我发现我的过程按规范工作。