IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Qt Discussion :

Slot pour deux interfaces différentes


Sujet :

Qt

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2017
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2017
    Messages : 37
    Par défaut Slot pour deux interfaces différentes
    Bonjour,

    J'ai deux fenêtres avec deux Ui différentes. Sauf que j'utilise les même Slot et des widgets identiques (même noms).
    Donc pour éviter d'écrire deux fois le même Slot j'essayer de faire en sorte de créer un Slot qui prendra en paramètre soit une fenêtre soit l'autre.
    Je sais pas si la bonne façon de faire mais je ne peux pas passer un Ui sachant qu'ils ont pas le même nom (pas la même classe).
    Dans mes Slot j'ai par exemple ui.unWidgetPresentDansLesDeuxAvecMemeNom du coup si je met le Slot à part faut que lui passe un des deux ui non?

    Merci d'avance,

  2. #2
    Membre très actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2010
    Messages
    248
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2010
    Messages : 248
    Par défaut
    Bonjour,

    C'est un peu difficile de comprendre sans voir le code. Mais peut être que c'est l'héritage qu'il vous faut afin de ne définir les slots qu'une seule fois.
    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    class MyWidgetBase : public QWidget{
     Q_OBJECT
     
    public:
        MyWidgetBase ::MyWidgetBase (QWidget *parent)
            : QWidget(parent){}
     
    public slots:
     
        virtual void mySlot(){
             //Code à exécuter. 
        }
    };
     
    class MyWidget1 : public MyWidgetBase{
     Q_OBJECT
     
    public:
        MyWidget1 ::MyWidget1 (QWidget *parent)
            : MyWidgetBase(parent){}
     
    };
     
    class MyWidget2 : public MyWidgetBase{
     Q_OBJECT
     
    public:
        MyWidget2 ::MyWidget2 (QWidget *parent)
            : MyWidgetBase(parent){}
     
    };

  3. #3
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2017
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2017
    Messages : 37
    Par défaut
    Bonjour merci pour la réponse rapide,

    Si c'était juste des fonctions normales oui l'héritage est une solution.
    Mais là j'ai des interfaces (Ui) et dans mes slots je fait appel à des Widgets de l'ui comme dans ce slot:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    void testCV::suivant ()
    {
    	bool areChecked = true;
    	int treeItemNumber = ui.treeWidget->topLevelItemCount();
    	for(int i=0; i<treeItemNumber; i++)
    	{
    		int isChecked = ui.treeWidget->topLevelItem(i)->checkState(0);
    		if(isChecked == 0)
    		{
    			areChecked = false;
    		}
     
    	}
    	if(!areChecked)
    	{
    		// Message d'erreur
    		QMessageBox msgBoxc;
    		msgBoxc.setWindowTitle("Validation");
    		msgBoxc.setText("Valider tous les connecteurs!");
    		msgBoxc.exec();
    	}
    	else if (treeItemNumber == 0)
    	{
    		// Message d'erreur
    		QMessageBox msgBoxc;
    		msgBoxc.setWindowTitle("Creation");
    		msgBoxc.setText("Ajouter d'abord des connecteurs!");
    		msgBoxc.exec();
    	}
    	else
    	{
    		// Message d'erreur
    		QMessageBox msgBoxc;
    		msgBoxc.setWindowTitle("Suite");
    		msgBoxc.setText("En construction!");
    		msgBoxc.exec();
    	}
    }
    Je veux faire quelque chose de ce genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    testCV* titi = new testCV();
     
    	connect(ui.pb_suivant,  &QPushButton::clicked, [=] {emit titi->suivant();});
    	//connect(ui.pb_suivant, SIGNAL(clicked()), this, SLOT(titi->suivant()));
    Le connect est dans ma deuxième fenêtre (ui classe) ou j'ai les mêmes Widgets que dans l'autre interface (ici testCV comme par exemple le ui.treewidget).

    Je peux hériter des Ui (ihm faite avec Qt Designer) et ensuite rajouter des Widgets avec Qt Designer?

  4. #4
    Membre très actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2010
    Messages
    248
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2010
    Messages : 248
    Par défaut
    Plutôt que d'hériter, est-ce qu'il ne serait pas plus simple de créer un widget de base, qui afficher le treewidget, puis l'incorporer dans vos 2 classes UI ?

  5. #5
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2017
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2017
    Messages : 37
    Par défaut
    Citation Envoyé par Gojir4 Voir le message
    Plutôt que d'hériter, est-ce qu'il ne serait pas plus simple de créer un widget de base, qui afficher le treewidget, puis l'incorporer dans vos 2 classes UI ?
    Oui après si j'ajoute des boutons ou autre chose.. Je fais comment? J'ajoute comment au widget de base avec le Designer?
    Mais je pense que là n'est pas la question non? J'ai 2 Ui c'est pas un soucis au contraire c'est plus pratique pour moi de modifier, le soucis c'est décrire qu'une fois le slot pour les deux.

  6. #6
    Membre très actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2010
    Messages
    248
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2010
    Messages : 248
    Par défaut
    Non justement le but n'est pas de modifier le widget de base. Le but c'est avoir un widget que l'on utilise comme n'importe quelle autres widget, et que l'on incorpore avec Qt Designer dans une ou plusieurs UI, comme on le ferait avec un bouton ou tout autre éléments.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 09/10/2008, 16h40
  2. Réponses: 3
    Dernier message: 30/06/2008, 22h18
  3. Deux submits pour deux pages différentes
    Par ceaser dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 19/07/2007, 22h34
  4. Réponses: 6
    Dernier message: 24/05/2007, 13h40
  5. Réponses: 3
    Dernier message: 24/07/2006, 16h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo