2009-05-09 5 views
0

J'essaye de faire en sorte que QTabWidget soit automatiquement redimensionné pour s'adapter à l'onglet enfant lorsque l'enfant est ajouté mais n'a pas pu le faire. J'ai créé un formulaire en utilisant Qt Designer et j'en ai hérité en utilisant l'approche de l'héritage unique comme suit.Comment puis-je redimensionner automatiquement une instance de qtabwidget lorsque des onglets enfants y sont ajoutés?

class MyWidget : public QWidget 
{ 
    Q_OBJECT 

public: 
    MyWidget(QWidget *parent = 0); 
private: 
    Ui::MyForm ui; 
}; 

J'ai un QTabWidget et j'ajoute l'instance de l'objet à mon QTabWidget en utilisant la AddTab(). Lorsque j'affiche le QTabWidget, je remarque qu'il n'a pas été redimensionné pour s'adapter à l'instance MyWidget. Que dois-je faire pour que l'instance QTabWidget soit automatiquement redimensionnée?

Répondre

0

Pour adapter un widget à son widget parent, vous devez utiliser une disposition particulière (grille, horizontale, verticale, etc.).

2

Dans le concepteur, assurez-vous d'ajouter une disposition à votre widget. Cliquez sur l'arrière-plan du widget de sorte que lorsque vous appliquez une mise en page, cela s'applique à l'ensemble du widget. L'astuce est que le widget de base (parent) sur lequel votre formulaire est construit a besoin d'une mise en page, et pas seulement les éléments du formulaire.

Les grilles sont généralement assez faciles à utiliser. Mais parfois les autres sont meilleurs. Designer peut être difficile à utiliser et prend un moment pour s'y habituer. Fondamentalement, chaque widget devrait probablement avoir une mise en page appliquée. Des choses étranges peuvent arriver quand vous ne le faites pas.

1

Je crois que c'est un bug du créateur (au moins pour opensource V4.7.4). Ma solution est la suivante.

Ne créez pas l'objet QTabWidget dans le projet principal.

Créez-le de manière indépendante (en créant Qt-> Form-class). Puis, copiez les 3 fichiers (.h,, cpp, .ui) dans le projet et ajoutez-les au projet.

Le résultat est: il se redimensionne comme le redimensionnement de la fenêtre principale.

Questions connexes