[QT] connect mit Methodenzeigern



  • Hallo!

    Ich habe folgendes Problem:
    Ich habe 5 Knöpfe und möchte die in einem Array speichern und entsprechend initialisieren, dafür habe ich folgende Struktur erstellt:

    struct Buttons
    {
    	typedef void (OptionChangeWindow::*PtrToSlot)( void);
    	QString Name;
    	PtrToSlot Slot;
    };
    Buttons MyButtons[2] = 
    {
    	{"Hinzufügen", &OptionChangeWindow::AddOption},
    	{"Ändern",  &OptionChangeWindow::ChangeOption},
    };
    

    Mein connect sieht wie folgt aus:

    connect(mCommands[i].get(), SIGNAL(clicked()), this, SLOT( MyButtons[i].Slot ) );
    

    Wobei mCommands ein vector von boost::shared_ptr auf die QPushButtons ist.
    Das Problem liegt beim letzten Parameter und zwar wird das MyButtons[i].Slot nicht aufgelöst zu der wirklichen Memberfunktion, sondern einfach als String genommen.
    Der Laufzeitfehler ist dann folgender:

    QObject::connect: Parentheses expected, slot OptionChangeWindow::MyButtons[i].Slot

    Kann man eventuell ein eigenes Makro schreiben, das den Zeiger vorher dereferenziert und das ganze dann in einen String umwandelt oder gibt es eine viel einfachere Lösung?


Anmelden zum Antworten