Question

Chaque fois que j'utilise la boîte de dialogue de l'éditeur de signal / emplacement, je dois choisir dans la liste des emplacements existants. La question est donc de savoir comment créer un emplacement nommé personnalisé.

Était-ce utile?

La solution

Malheureusement, cela n’est pas possible dans Qt4.

Dans Qt3, vous pouvez créer des emplacements personnalisés qui seront ensuite implémentés dans le fichier ui.h. Cependant, Qt4 n’utilise pas ce fichier, les emplacements personnalisés ne sont donc pas pris en charge.

Il existe des discussions sur ce problème dans le QtForum

Autres conseils

Cela semble être possible dans la version de Qt Designer 4.5.2, mais cela ne peut pas être effectué à partir du dock-widget Signal / Slot Editor dans la fenêtre principale.

C'est ce qui a fonctionné pour moi

  1. Passez en mode Éditer les signaux / emplacements (F4)
  2. Glissez-déposez du widget qui doit émettre le signal vers le widget qui doit recevoir le signal.
  3. Une boîte de dialogue Configurer la connexion apparaît. Elle contient les signaux du widget émetteur et les emplacements du widget récepteur. Cliquez sur Modifier ... sous la colonne d'emplacements à droite.
  4. Une boîte de dialogue Signaux / Slots of ReceivingWidget apparaît. Ici, il est possible de cliquer sur l'icône plus située sous les emplacements pour ajouter un nouvel emplacement de n'importe quel nom.
  5. Vous pouvez ensuite revenir en arrière et vous connecter à votre nouvel emplacement dans la boîte de dialogue Configurer la connexion , ou bien dans le dockwidget Editeur d'emplacement / de signaux dans la fenêtre principale.

Avertissement: J'utilise PyQt et je n'ai essayé d'utiliser que les emplacements ajoutés de cette manière à partir de Python, pas à partir de C ++, de sorte que votre kilométrage peut varier ...

Cliquez avec le bouton droit de la souris sur la fenêtre principale et sélectionnez "Modifier les signaux et les créneaux horaires". et ajoutez un nouvel emplacement. Il apparaîtra dans votre éditeur de slot de signal.

Je suis capable de le faire par:

Dans MainWindow.h, ajoutez la ligne:

public slots:
     void example();

dans la classe MainWindow.

Dans MainWindow.cpp

void MainWindow::example() {
     <code>
}

Cela ne semble pas être possible simplement.

Le concepteur ne vous permet que de promouvoir les widgets existants vers vos propres widgets personnalisés. cependant, cela ne vous permet pas de connecter les signaux et les slots de la classe des widgets promus.

Cela est possible en créant un plugin pour le concepteur tel quel décrit ici et dans les pages qui suivent.

La procédure normale consiste à promouvoir un widget dans votre propre classe, puis à le connecter manuellement dans votre propre code. ce processus est décrit ici

Ce n'est pas possible, car cela signifie que vous ajouteriez un emplacement à une classe Qt existante telle que QPushButton , ce qui n'est pas vraiment la solution.

Vous devriez créer votre propre QWidget en sous-classant éventuellement un existant. Puis intégrez-le dans Qt Designer en tant que plugin, comme suggéré. Avoir votre propre classe vous permet d’ajouter / de modifier les signaux / emplacements disponibles à votre guise.

N'oubliez pas les fonctionnalités de connexion automatique aux emplacements. Il y a quelques inconvénients, comme devoir renommer votre fonction si vous renommez votre widget, mais nous les utilisons beaucoup dans mon entreprise.

Vous pouvez utiliser le format d'emplacement magique de

void on_objectName_signal() {
// slot code here, where objectname is the Qt Designer object name
// and the signal is the emission
}

La connexion à cette méthode est établie par la méthode connectSlotsByName et chaque fois que le signal est émis, cet emplacement est appelé.

Peut-être que ça va aider.

Par défaut, vous devez choisir dans la liste des emplacements existants. Mais vous pouvez ajouter un créneau en cliquant avec le bouton droit de la souris sur votre objet dans la liste située à droite du concepteur et en choisissant "créneau / signaux". et ajoutez votre emplacement / signal personnalisé. Ensuite, vous pouvez le choisir dans l'éditeur de signal / emplacement.

cliquez sur le widget avec le bouton droit

promouvoir le widget dans une classe que vous avez définie

cliquez à nouveau sur le widget avec le bouton droit de la souris

vous verrez que le signal et l'emplacement sont modifiables

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top