与QWinWidget对接:为QWidgets添加DockWidgetAreas
Docking with QWinWidget: Adding DockWidgetAreas to QWidgets
我有一个在 Win32 window 中使用 QWinWidget
的应用程序。我想向其中添加 DockWidgets 和相关行为。似乎没有任何公开的用于添加自定义 DockAreas
的 API,并且除了将 DockWidgets
添加到 QMainWindow
之外,最新的文档很少。 Older docs imply曾经有一个publicQDockArea
class.
到目前为止,我最好的选择似乎是 adding a neutered QMainWindow (no top-level status, no frame, etc.) to the QWinWidget and going from there (second source)。
我希望有一种方法可以将 DockAreas 添加到任何容器中,但它并没有以这种方式出现。作为旁注,QWinWidget
用于根据我们的自定义框架要求对 window 管理器进行控制,但是如果有一个纯粹的 QMainWindow
/QWidget
方式来获得相同的结果( Qt::FramelessWindowHint
),我很乐意切换。
正如我在评论中所说,我在我的 Win32 window QWinWidget 中添加了一个 QMainWindow 字段。即:
class QWinWidget : public QWidget
{
...
QMainWidget* mainWidget;
}
QWinWidget::QWinWidget()
{
mainWidget = new QMainWindow(this);
mainWidget->setWindowFlags(Qt::Widget); //1
}
请注意,虽然 the docs and some forum posts (from this post) 表示由于 QMainWindow 构造函数设置 Qt::Window
,您需要显式设置 window 标志,但我在没有 setWindowFlags()
行的情况下对其进行了测试(上面标有//1
)没有发现任何错误。
所以,这给了我漂亮的 QWinWidget window 我花了很多时间在无框架的 Win32 window 中制作,带有 QMainWindow child 以及带来的所有功能用它。停靠、菜单栏、状态栏等
我有一个在 Win32 window 中使用 QWinWidget
的应用程序。我想向其中添加 DockWidgets 和相关行为。似乎没有任何公开的用于添加自定义 DockAreas
的 API,并且除了将 DockWidgets
添加到 QMainWindow
之外,最新的文档很少。 Older docs imply曾经有一个publicQDockArea
class.
到目前为止,我最好的选择似乎是 adding a neutered QMainWindow (no top-level status, no frame, etc.) to the QWinWidget and going from there (second source)。
我希望有一种方法可以将 DockAreas 添加到任何容器中,但它并没有以这种方式出现。作为旁注,QWinWidget
用于根据我们的自定义框架要求对 window 管理器进行控制,但是如果有一个纯粹的 QMainWindow
/QWidget
方式来获得相同的结果( Qt::FramelessWindowHint
),我很乐意切换。
正如我在评论中所说,我在我的 Win32 window QWinWidget 中添加了一个 QMainWindow 字段。即:
class QWinWidget : public QWidget
{
...
QMainWidget* mainWidget;
}
QWinWidget::QWinWidget()
{
mainWidget = new QMainWindow(this);
mainWidget->setWindowFlags(Qt::Widget); //1
}
请注意,虽然 the docs and some forum posts (from this post) 表示由于 QMainWindow 构造函数设置 Qt::Window
,您需要显式设置 window 标志,但我在没有 setWindowFlags()
行的情况下对其进行了测试(上面标有//1
)没有发现任何错误。
所以,这给了我漂亮的 QWinWidget window 我花了很多时间在无框架的 Win32 window 中制作,带有 QMainWindow child 以及带来的所有功能用它。停靠、菜单栏、状态栏等