8
votes

Qt4: Placements d'instance QmainWindow à l'intérieur d'autres Qwidget / Qmainwindow

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> premier exemple (fonctionne bien) strong> 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> xxx pré>

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;
};


2 commentaires

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.


3 Réponses :


-3
votes

qmainwindow 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 .

Vous devez vous assurer que chaque qmainwindow a central qwidget`, autre que ça, ça devrait aller bien.


3 commentaires

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? ", 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 :)



3
votes
centralwidget = new QMainWindow(this);
centralwidget->setWindowFlags(Qt::Widget);
setCentralWidget(centralwidget);
This should help.

0 commentaires