2017-02-14 2 views
1

Also, ich bin auf der Suche nach einer Schaltfläche, die flach wird, wenn in QT5 gedrückt wird. Ich habe dieses
https://woboq.com/blog/new-signals-slots-syntax-in-qt5.html
gelesen und es scheint, dass ich in der Lage sein sollte, dies zu tun, ohne meine eigene Knopfklasse zu machen. Also, ich habeQT5 verbinden Signal zu Funktion

bekam

QPushButton* button = new QPushButton("text", parent); QObject::connect(button, &QPushButton::clicked, button, &QPushButton::isFlat(true));
und ich bin immer
error: call to non-static member function without an object argument
Meine Fragen sind; lese ich diese neue Syntax falsch? Kann ich nur mit statischen Funktionen verbinden?

Antwort

3

Sie versuchen, eine Methode von keinem Fall zu verbinden, verwenden Sie ein lambda zum Beispiel für die Aufnahme auf die Schaltfläche Beispiel:

QObject::connect(button, &QPushButton::clicked, button, 
       [&button]() {button->setFlat(true)}); 

Nicht getestet.

+0

Ich bin auf dem richtigen Weg, denke ich. '[& button]() {button-> setFlat (true);}' Sollte setflat (meine schlechte) sein. Dies kompiliert aber auch beim Drücken der Taste. – Darakian

+0

@Darakian, was ist der Fehlercode? – Netwave

+0

Verstanden. Nun benutze '[=]() {button-> setFlat (true);}' als letzten Parameter und alles ist gut. Du bist der Mann Mann! – Darakian

Verwandte Themen