我只是想进入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
对象?
还是我完全忽视了一些明显的东西?谢谢你的阅读!
答案 0 :(得分:1)
我会将QDockWidget内容设计为单独的UI文件。然后创建它们并将它们粘贴到AEmpire构造函数中的QDockWidgets中。