2009-02-10 6 views
0

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!

Répondre

1

Je voudrais concevoir le contenu QDockWidget en tant que fichiers d'interface utilisateur distincts. Ensuite, créez-les et collez-les dans les QDockWidgets du constructeur AEmpire.

Questions connexes