窗口置父以后怎么不让子窗口移动来移动去
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了窗口置父以后怎么不让子窗口移动来移动去相关的知识,希望对你有一定的参考价值。
参考技术A如果你使用的是“载入”命令,那么把参数设置成如下就可以了:
父窗口:不填
是否采用对话框方式:假
设置你想要固定的窗口:假
另外你还可以采用加个标签挡住窗口的方法,参数如下:
子程序 _标签1_鼠标左键被按下, 逻辑型
参数 横向位置, 整数型
参数 纵向位置, 整数型
参数 功能键状态, 整数型
发送信息 (161, 2, 0)
如果此时子窗口不见了,你可以用移动窗口的命令,将子窗口移动到父窗口坐标点(0,0)的位置,一般就可以解决找不到子窗口的问题;或者用API“ShowWindowAsync”这个命令;也可以调整子窗口的透明度。
移动 QMainWindow 不会影响子窗口小部件的绘制位置
【中文标题】移动 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 已经不支持了。以上是关于窗口置父以后怎么不让子窗口移动来移动去的主要内容,如果未能解决你的问题,请参考以下文章