窗口置父以后怎么不让子窗口移动来移动去

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 已经不支持了。

以上是关于窗口置父以后怎么不让子窗口移动来移动去的主要内容,如果未能解决你的问题,请参考以下文章

用delphi移动窗口~

如何在子窗口中移动父窗口?

子窗口可以知道何时移动父窗口吗?

如何在 PyQt5 中相对于父窗口移动子窗口?

易语言怎样实现让自己程序窗口嵌套到别的程序窗口中

QT 子窗口监听主窗口信号(超级简单,但是好用,比如主窗口移动的时候,子窗口不要再继续处理任务)