qt - 如何允许 QDockWidget 停靠到多个 QMainWindow 实例
问题描述
我有一个带有多个 QMainWindows 的 Qt5.11.0 应用程序(在 OSX10.13 和 CentOS7.4 上)。我希望用户能够将应用程序中的任何给定 QDockWidget 停靠到任何 QMainWindow 实例中。
下面的示例代码显示了一个具有两个 QMainWindows 和一个 QDockWidget 的应用程序。我可以将 QDockWidget 与它所附加的第一个 QMainWindow 取消停靠和重新停靠,但是如果我将分离的 QDockWidget 悬停在第二个 QMainWindow 上,QDockWidget 和第二个 QMainWindow 会相互忽略,而不是像希望的那样停靠在一起:
#include <QApplication>
#include <QMainWindow>
#include <QDockWidget>
#include <QLabel>
int
main( int argc, char *argv[] ) {
QApplication app( argc, argv );
QMainWindow* mw1 = new QMainWindow();
QMainWindow* mw2 = new QMainWindow();
mw1->setWindowTitle( "Main Window 1" );
mw2->setWindowTitle( "Main Window 2" );
mw1->setCentralWidget( new QWidget() );
mw2->setCentralWidget( new QWidget() );
QDockWidget* dockWidget = new QDockWidget( "Stepchild", mw1 );
QLabel* label = new QLabel( "Hello World" );
dockWidget->setWidget( label );
mw1->addDockWidget( Qt::LeftDockWidgetArea, dockWidget );
mw1->show();
mw2->show();
QRect first = mw1->geometry();
int pixeloffset = 200;
mw2->setGeometry( first.x() + pixeloffset,
first.y() + pixeloffset,
first.width(),
first.height() );
return app.exec();
}
如何让上面的 QDockWidget 停靠在应用程序中的任何 QMainWindows 中?
谢谢 -
解决方案
推荐阅读
- machine-learning - tensorflow object-detection api中的数据集类型是什么?
- angular - 如何开发一个简单的网站,在 javascript 中每 3 秒显示一次肯定的肯定
- node.js - 如何将 HTTP POST 请求从 localhost 发送到运行在 AWS EC2 实例上的 nodemailer
- spring - Java Spring JPA 转换为 myBatis
- java - 如何将java输出解析为CSV文件
- html - 当子 div 具有特定的 className 时如何向父 div 添加样式
- loops - 将函数应用于拆分数据集
- python - 如何在 Python 中重新评估变量的值?
- r - 如何在数据框中有效地存储来自变量和因子水平的不同组合的计算?
- flutter - 我想从 FireStore 获取字段数据