Я просто пытаюсь попасть в программу QT (и KDE) и попал в ловушку, пытаясь добавить плавающий, перетаскиваемый QDockWidget
в .ui файл (основанный как QWidget
), встроенный в мою программу KDE 4.Плавающий/встроенный QDockWidget в QWidget (KWMGuiWindow's CentralWidget, разработанный в QT Designer)
Это все из базового шаблона, предоставленного 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, я на самом деле редактирование файла AEmpireView_base
пользовательского интерфейса, который является QWidget
. Он просто представляет основной вид KXmlGuiWindow
(полученный от QMainWindow
) и загружается во время выполнения.
Итак, как мне добавить плавающее, перетаскиваемое QDockWidget
s в мое основное приложение? Разрабатывает их отдельно и добавляет их в пользовательский интерфейс наилучшим образом? Или, может быть, удалить весь класс AEmpireView
и сделать мой файл ui напрямую представлять объект KXmlGuiWindow
, который будет загружен AEmpireClass
?
Или я полностью игнорирую нечто очевидное? Спасибо за прочтение!