我有一个QMainWindow,它创建了多个QDialog子窗口并将自己设置为父窗口.当有一个监视器时,一切正常,窗口在当前监视器中正确居中.但是当我有多个监视器时,子窗口往往在主监视器上打开,而不是在QMainWindow当前所在的监视器上打开.
请注意,我的窗口必须能够在其父窗口之外导航(它们每个都设置了Qt.Window标志).
那么,我如何将窗口小部件相对于它的父位置(即以QMainWindow为中心)居中,以避免它们在其他地方开放?
这是我目前使用的窗口中心:
def centerOnScreen(widget):
desktopWidget = QApplication.desktop()
screenRect = desktopWidget.availableGeometry(widget)
widget.move(screenRect.center() - widget.rect().center())
解决方法:
您的代码似乎是实现所需行为的良好尝试.两个建议:
>尝试直接找到QMainWindow的左侧,顶部,宽度和高度,而不是采用桌面参数.
>在调用Exec方法之前,使用此几何信息将对话框移动(并可能调整大小)到应用程序的中心.
希望有所帮助.
标签:python,qt 来源: https://codeday.me/bug/20190903/1794629.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。