[英]QSizeGrip and Qt::Popup
当我将QSizeGrip
添加到小部件(例如QWidget
或QDialog
),然后启用Qt::Popup
窗口标志时,大小控制不再起作用。
为什么这样?
我想创建一个可调整大小的无边界弹出窗口,就像QCompleter
使用的QCompleter
。 设置Qt::FramelessWindowHint
标志似乎使其变为无边界,但是焦点行为却大不相同。
仔细阅读Qt资料后,我发现了两种可能的解决方案。
基本上, QSizeGrip
提供了一个非常好的基本实现,即使设置了Qt::Popup
或由于其他原因而窗口无边界时,它也可以正常工作。 但是,Qt尝试使用特定于平台的机制来提供大小控制。
至少在Linux / X11下,当设置Qt::Popup
标志时,该机制似乎会失败。
这个想法是绕过使用平台特定的机制,而总是使用基本的实现(又名Qt的后备)。 这可以通过以下任一方式来实现
Qt::BypassWindowManagerHint
标志或 QWidget::hasHeightForWidth()
以返回true(并适当提供中立的Qt::heightForWidth()
)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.