Qpushbutton klikket signalspor h1>

Fa via App Store Les dette innlegget i var app!

Qt C ++ Koble QPushButton klikk.

Jeg har nettopp begynt a utvikle med QtGUI, og jeg har sjekket ut noen veiledninger og dokumentasjon, og med det jeg har lest, bor dette fungere.

Men testen () blir aldri kalt. Ogsa, lpTestBtn er ikke null og er funnet riktig.

Jeg har provd folgende endringer.

Jeg vet at jeg bare kan gjore QtProject :: on_TestBtn_clicked (); men jeg vil gjerne fa det til a fungere med CONNECT, SIGNAL og SLOT.

1) QApplication har ikke en test () –spor i den. Du ma lage din egen klasse, arve QApplication, og gi den klassen en test () –spor. Det du har gjort er a skape en vanlig funksjon, som ikke vil hjelpe.

2) Du har ikke sjekket returverdien for tilkobling, noe som betyr at du ikke sa at det ga deg en feil, som trolig ville ha gitt deg noen ledetrader.

Du kan koble signaler til sporene som er i klasser avledet fra QObject, slik at meta compiler kan utlede sporsamtaler. Men testen din () er global funksjon. Du ma sette spor-funksjonen inne i en klasse som kommer fra QObject og stotter Q_OBJECT-makro eller definere en lambda-funksjon (med C ++ 11-stotte) som Laszlo Papp viste.

Testfunksjonen i koden din er ikke et spor, og tilhorer heller ikke Q (Core) Application klassen som du ser ut til a ha brukt den.

Det beste ville v re a flytte den ene linjen i testfunksjonen til forbindelsen med lambda-syntaksen. Dette vil kreve C ++ 11-stotte, men det er i ganske vanlig bruk i disse dager.

Du vil bruke den nye skinnende signal-slot-syntaksen. Dette vil spare deg for hodepine for kjoretidsprosesser i fremtiden fordi de skulle vises pa kompileringstid.

Derfor vil du skrive noe slikt:

main.pro.

Bygg og kjore.

V r ogsa oppmerksom pa at det er darlig ide a lage en global peker for et QPushButton-objekt. Det lekker ikke bare minnet, men du kan ogsa ha andre problemer.