J'aimerais placer une instance QmainWindow à l'intérieur d'un autre Qwidget (par exemple Centralwidget d'un autre Qmainwindow).
Je me demande pourquoi ça ne marche pas? QmainWindow hérite directement de qwidget. Placer Qwidget à l'intérieur d'un autre Qwidget fonctionne bien. P>
Je placez souvent des instances QmainWindow à QTabbar sans aucun problème. P>
PS Vous pouvez demander pourquoi dois-je utiliser QmainWindow? Je veux placer 2 widgets à l'intérieur de 1 formulaire à l'aide d'une disposition verticale. Je veux que les deux widgets aient des barres d'outils séparées directement sur eux. P>
Il y a peut-être une autre façon de placer des barres d'outils à l'intérieur Qwidgets plaints à l'aide de QTCreator? P>
EDIT P> i Créez une nouvelle classe / formulaire basé sur qwidget. (QTCreator crée 3 fichiers * .CPP, * .h et * .ui basé sur des modèles standard). P> La déclaration de classe ressemble à ceci p> quand J'essaie d'utiliser ce widget et de le placer dans un autre widget qui fonctionne bien.
J'ai utilisé "Promouvoir ..." de QtCreator - aucun problème ici. P> Deuxième exemple (ne fonctionne pas) strong> P> i Créer une nouvelle classe / Formulaire basé sur QmainWindow. (QTCreator crée 3 fichiers * .cpp, * .h et * .ui basé sur des modèles standard). P> La déclaration de classe ressemble à ceci: p> class Notes : public QMainWindow
{
Q_OBJECT
public:
explicit Notes(QWidget *parent = 0);
~Notes();
private:
Ui::Notes *ui;
};
3 Réponses :
Vous devez vous assurer que chaque qmainwindow code> fournit des éléments prédéfinis tels que les barres d'outils et les barres d'état et les barres de menu d'une plate-forme agnostique (il "fait la bonne chose", sans intervention manuelle). Si tout ce dont vous avez besoin est un tas de boutons dans une mise en page, utilisez
qwidget code>. P>
qmainwindow a central code> qwidget`, autre que ça, ça devrait aller bien. P>
Je sais ce que Qmainwindow est. Cet article ne répond pas du tout à ma question.
Eh bien, si votre question est " je me demande pourquoi ça ne marche pas? Code>", j'ai essayé de répondre aussi précis que la question elle-même. Il n'y a qu'une seule chose qui peut vous empêcher de faire ce que vous essayez de faire: pas de widget central. Vous pouvez créer votre propre mise en page avec des barres d'outils à l'intérieur de chaque onglet du QTabbar. Spécifiez ce que vous avez après, et au moins fournissez des messages de code et / ou d'erreur. Je ne peux pas lire votre esprit.
J'ai fourni une description supplémentaire du problème. Je pensais que ma question était simple. Il n'y a pas d'erreurs, c'est très simple. Quoi qu'il en soit merci de l'aide :)
centralwidget = new QMainWindow(this); centralwidget->setWindowFlags(Qt::Widget); setCentralWidget(centralwidget); This should help.
avoir le même problème, j'ai trouvé la solution ici a>. qmainwindow définit son type de fenêtre à Qt :: Fenêtre de sorte qu'il s'agisse d'une fenêtre indépendante, même si elle a un parent (vous pouvez le confirmer en appelant Afficher () sur votre QmainWindow et vous le verrez dans sa propre fenêtre). Essayez d'ajouter la ligne p> après avoir construit le qmainwindow. P> p>
Le lien vers la solution est cassé
Pouvez-vous élaborer ce qui se passe exactement? Quand vous dites "ça ne marche pas" Qu'est-ce qui se passe réellement? Cela donne-t-il une erreur ou tout simplement rien ne se présente?
J'ai fourni une description supplémentaire. Il n'y a pas d'erreur, rien ne se présente dans le deuxième exemple.