繁体   English   中英

QSizeGrip和Qt :: Popup

[英]QSizeGrip and Qt::Popup

当我将QSizeGrip添加到小部件(例如QWidgetQDialog ),然后启用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM