Qt Designer: la Modification de la classe de base d'une fenêtre
J'ai déjà créé une deuxième fenêtre de mon application dans le Qt Designer.
J'ai lu qu'un QMainWindow serait une mauvaise classe pour la deuxième fenêtre (qui, fondamentalement, ne doit être une sorte de boîte de dialogue), donc je voudrais modifier la classe de base.
Ma Question(s) sont les suivants:
- Est-il un moyen de modifier la classe de base, sans création d'une nouvelle fenêtre et la copie de mon code dans les nouveaux fichiers?
- Quelqu'un peut-il expliquer lors de l'utilisation de QMainWindow, QDialog et QWidget? Je n'ai pas trouvé de bonnes explications sur les différences entre ces trois classes de base dans Qt.
- Cette question m'a aidé: stackoverflow.com/questions/6533329/...
Vous devez vous connecter pour publier un commentaire.
Modifier la classe de base, vous ne pouviez changer le
: public QMainWindow
à: public QWidget
(ou vice-versa) dans l'en-tête de fichier et bien sûr aussi la *.rpc.Fondamentalement, tous les trois sont QWidgets, chacun avec des fonctionnalités spéciales ou pour des fins spécifiques. Autant que je sache, la QMainWindow a barres d'outils, menubars et sur les quais, un QDialog apparaît toujours comme une fenêtre à coté (par exemple, le blocage, non-blocage, etc.) et le QWidget lui-même est la classe de base. I. e. QPushButton, QCombobox sont dérivées à partir de QWidget trop. À mon avis, il serait préférable de n'utiliser que l'un QMainWindow puisqu'il devrait être un point central de l'interaction et de navigation pour l'utilisateur
EDIT:
J'ai oublié de mentionner également l'INTERFACE utilisateur-fichier doit être modifié, par exemple en utilisant un éditeur de texte, modifiez la ligne (4e de ligne, je pense)
à
et de supprimer tous les QMainWindows pièces connexes (barre de menus, barre d'outils, ...), et la balise englobante pour le widget.
Grâce à alexisdm pour l'astuce.
QMainWindow
(le widget en haut de l'arbre dans le concepteur), de sorte que le généréssetupUi
fonction attend un pointeur vers unQMainWindow
.QWidget
que sa racine et à appliquer une nouvelle mise en page à la racine (la racine de mise en page ne semble pas être copié avec le reste). Il est également possible de modifier manuellement la .l'interface utilisateur du fichier xml, par la suppression de toutes lesQMainWindow
pièces connexes (barre de menus, barre d'outils, ...), et de l'enfermer<widget>
balise pour le widget.Vous pouvez prendre @Robert s 'approche, mais le plus simple est de créer une nouvelle classe de formulaire dans Qt Designer, puis dans Qt Designer copier le contenu de l'original de votre widget et les coller dans le nouveau.
Voir aussi.
J'ai créé un nouveau Concepteur de la classe de Formulaire, une fois comme un QMainWindow et une fois comme un QDialog, et les a comparés à Git pour voir les différences.
Il suffit de suivre le fichier de patch, et remplacer les lignes que nécessaire: