J'essaie juste d'entrer dans le programme QT (et KDE), et j'ai rencontré un problème en essayant d'ajouter un flottant, dragable QDockWidget
au fichier .ui fichier (basé sur QWidget
) intégré à mon programme KDE 4. Tout est à partir du modèle de base fourni par KDevelop 4, donc si je comprends ce qui se passe, je ne connais pas la meilleure façon de le changer.QDockWidget flottant/incorporé dans un QWidget (CentralWidget de KXmlGuiWindow conçu dans QT Designer)
est ici l'affaire: main.cpp crée une nouvelle fenêtre AEmpire
, qui commence tout le spectacle au large:
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();
}
Lorsqu'un nouveau AEmpireView(this)
est créé (qui hérite de QWidget
) et est attribué à m_view, ce constructeur est appelé:
AEmpireView::AEmpireView(QWidget *)
{
ui_aempireview_base.setupUi(this);
settingsChanged();
setAutoFillBackground(true);
}
Alors, quand je suis l'édition du uipour mon programme dans QT designer, je suis d'édition en fait le fichier AEmpireView_base
ui, qui est un QWidget
. Il représente juste la vue principale du KXmlGuiWindow
(dérivé de QMainWindow
) et est chargé lors de l'exécution. Alors, comment ajouter QDockWidget
flottable, dragable dans mon application principale? Est-ce que les concevoir séparément, et les ajouter à l'interface utilisateur la meilleure option? Ou peut-être supprimer la classe entière AEmpireView
, et faire de mon fichier ui représente directement un objet KXmlGuiWindow
à charger par le AEmpireClass
?
Ou est-ce que je néglige totalement quelque chose d'évident? Merci d'avoir lu!