我在Win32窗口中有一个使用QWinWidget
的应用程序。我想将DockWidgets及其相关行为添加到其中。似乎没有任何公开的API可用于添加自定义DockAreas
,并且除了将DockWidgets
添加到QMainWindow
之外,最新的文档很少。 Older docs imply曾经有一个公开的QDockArea
课程。
到目前为止,我最好的选择似乎是adding a neutered QMainWindow(没有顶级状态,没有框架等)到QWinWidget并从那里开始(second source)。
我希望有一种方法可以将DockAreas添加到任何容器中,但它不会出现这种情况。作为旁注,QWinWidget
用于使用我们的自定义框架要求进行窗口管理器控制,但是如果纯粹的QMainWindow
/ QWidget
方式具有相同的结果(使用Qt::FramelessWindowHint
),我很乐意转换。
答案 0 :(得分:0)
正如我在评论中所说,我在我的Win32窗口的QWinWidget中添加了一个QMainWindow字段。那就是:
class QWinWidget : public QWidget
{
...
QMainWidget* mainWidget;
}
QWinWidget::QWinWidget()
{
mainWidget = new QMainWindow(this);
mainWidget->setWindowFlags(Qt::Widget); //1
}
请注意,虽然the docs和some forum posts(from this post)表示您需要显式设置窗口标记,因为QMainWindow构造函数设置为{{ 1}},我测试了它没有Qt::Window
行(上面标有setWindowFlags()
)而没有注意到任何错误。
所以,这给了我一个很好的QWinWidget窗口,我花了很多时间在一个无框架的Win32窗口里,有一个QMainWindow孩子以及随之而来的所有功能。停靠,菜单栏,状态栏等