移动 QMainWindow 不会影响子窗口小部件的绘制位置
Posted
技术标签:
【中文标题】移动 QMainWindow 不会影响子窗口小部件的绘制位置【英文标题】:Moving QMainWindow does not affect where the child widgets are being drawn 【发布时间】:2016-01-12 23:10:35 【问题描述】:我对 Qt 环境还很陌生。我有一个要在第二台显示器上显示的应用程序。目前,在 MainWindow 构造函数中,我正在使用以下代码将窗口移动到第二个监视器。
main():
MainWindow w;
w.showFullScreen();
MainWindow() 构造函数:
QRect screenres = QApplication::desktop()->screenGeometry(1);
this->move(QPoint(screenres.x(), screenres.y()));
this->resize(screenres.width(), screenres.height());
这适用于我的主窗口。问题是所有子小部件仍然显示在第一台显示器上。我有一个菜单小部件,它是在 move() 之后在构造函数中创建的 centralWidgetFrame 的一部分,但它没有在第二个监视器上创建。据我了解,应该在相对于其父级的位置创建子小部件。
MainWindow 按预期返回一个 (1920,0) 的 pos(),子菜单小部件给我一个 (0,0) 的 pos()。
我使用的是 Qt 4.7.1。有什么建议吗?
【问题讨论】:
【参考方案1】:我认为这是因为您在其构造函数中移动 MainWindow 并调整其大小。
在 main() 中执行:
MainWindow w;
QRect screenres = QApplication::desktop()->screenGeometry(1);
w.move(QPoint(screenres.x(), screenres.y()));
w.resize(screenres.width(), screenres.height());
w.showFullScreen();
【讨论】:
这其实是我最先做的。它做同样的事情。我最终将它移到了构造函数中,因为我认为我可能需要在初始化其他小部件、工具栏等之前完成它。 那么最好切换到 Qt 5。它具有 QWindow::setScreen 功能,并且已知在多显示器配置中工作更一致。此外,Qt 4 已经不支持了。以上是关于移动 QMainWindow 不会影响子窗口小部件的绘制位置的主要内容,如果未能解决你的问题,请参考以下文章
当设备的(android)键盘处于活动状态时,jquery 移动弹出窗口小部件不会移动