Bonjour.
J'ai eu une erreur assez intéressante avec ce code :
Code Qt : 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 class Settings { public: enum HomeLayout { H_Grid, H_List }; //une énumération simple public slots: void setHomeLayout(HomeLayout); } //connect 1 : ok connect(combobox, SIGNAL(currentIndexChanged(int)), &settings, SLOT(setHomeLayout(HomeLayout))); //connect 2 : problème à cause de l'enum connect(combobox, static_cast<void (QComboBox::*)(int)>( &QComboBox::currentIndexChanged ), &settings, &Settings::setHomeLayout );
Ce code sert à définir l'affichage d'un écran d'accueil (liste ou grille).
Quand je passe par la « vielle » syntaxe de connexion avec les macros, ça compile et ça fonctionne.
Quand j'essaie la syntaxe avec l’adresse des méthode, ça ne compile plus :
Visiblement QMetaObject n'aime pas convertir les entiers en enumqglobal.h:684: erreur : static assertion failed: Signal and slot arguments are not compatible.
Quelqu'un de calé en Qt sais si il est possible de forcer un cast implicite ou bien aurait une autre solution ?
Partager