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 :
qglobal.h:684: erreur : static assertion failed: Signal and slot arguments are not compatible.
Visiblement QMetaObject n'aime pas convertir les entiers en enum

Quelqu'un de calé en Qt sais si il est possible de forcer un cast implicite ou bien aurait une autre solution ?