QWidget中的浮动/嵌入式QDockWidget(在QT Designer中设计的KXmlGuiWindow的CentralWidget)

时间:2009-02-10 03:42:44

标签: c++ qt qt4 kde kdevelop

我只是想进入QT(和KDE)程序,并试图在.ui文件中添加一个可浮动的,可拖动的QDockWidget(基于QWidget)嵌入到我的KDE 4程序中。

这完全来自KDevelop 4提供的基本模板,所以当我了解发生了什么时,我只是不知道改变它的最佳方法。

这是交易:main.cpp会生成一个新的AEmpire窗口,启动整个节目:

AEmpire::AEmpire()
       : KXmlGuiWindow(),
         m_view(new AEmpireView(this)),
         m_printer(0)
{
    // tell the KXmlGuiWindow that this is indeed the main widget
    setCentralWidget(m_view);

    setupActions();
    setupGUI();
}

当创建新的AEmpireView(this)(继承自QWidget)并将其分配给m_view时,将调用此构造函数:

AEmpireView::AEmpireView(QWidget *)
{
    ui_aempireview_base.setupUi(this);
    settingsChanged();
    setAutoFillBackground(true);
}

所以,当我在QT Designer中编辑ui到我的程序时,我实际上正在编辑AEmpireView_base ui文件,这是一个QWidget。它只代表KXmlGuiWindow的主视图(派生自QMainWindow)并在运行时加载。

那么,如何在我的主应用程序中添加可浮动,可拖动的QDockWidget?是单独设计它们,并将它们添加到UI中是最佳选择吗?或者可能删除整个AEmpireView类,并使我的ui文件直接代表KXmlGuiWindow要加载的AEmpireClass对象?

还是我完全忽视了一些明显的东西?谢谢你的阅读!

1 个答案:

答案 0 :(得分:1)

我会将QDockWidget内容设计为单独的UI文件。然后创建它们并将它们粘贴到AEmpire构造函数中的QDockWidgets中。