与QWinWidget对接:将DockWidgetAreas添加到QWidgets

时间:2015-05-06 18:03:52

标签: qt visual-c++

我在Win32窗口中有一个使用QWinWidget的应用程序。我想将DockWidgets及其相关行为添加到其中。似乎没有任何公开的API可用于添加自定义DockAreas,并且除了将DockWidgets添加到QMainWindow之外,最新的文档很少。 Older docs imply曾经有一个公开的QDockArea课程。

到目前为止,我最好的选择似乎是adding a neutered QMainWindow(没有顶级状态,没有框架等)到QWinWidget并从那里开始(second source)。

我希望有一种方法可以将DockAreas添加到任何容器中,但它不会出现这种情况。作为旁注,QWinWidget用于使用我们的自定义框架要求进行窗口管理器控制,但是如果纯粹的QMainWindow / QWidget方式具有相同的结果(使用Qt::FramelessWindowHint),我很乐意转换。

1 个答案:

答案 0 :(得分:0)

正如我在评论中所说,我在我的Win32窗口的QWinWidget中添加了一个QMainWindow字段。那就是:

class QWinWidget : public QWidget
{
  ...
  QMainWidget* mainWidget;
}

QWinWidget::QWinWidget()
{
  mainWidget = new QMainWindow(this);
  mainWidget->setWindowFlags(Qt::Widget); //1
}

请注意,虽然the docssome forum postsfrom this post)表示您需要显式设置窗口标记,因为QMainWindow构造函数设置为{{ 1}},我测试了它没有Qt::Window行(上面标有setWindowFlags())而没有注意到任何错误。

所以,这给了我一个很好的QWinWidget窗口,我花了很多时间在一个无框架的Win32窗口里,有一个QMainWindow孩子以及随之而来的所有功能。停靠,菜单栏,状态栏等