c ++ - Tilføj knap klik håndterer i Qt projekt, Visual Studio

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har Qt SDK og Visual Studio Qt Add-In, der arbejder i VS2008. Jeg oprettede Qt UI projekt med hovedvinduet klasse MainWindow. Dobbeltklik på mainwindow.ui åbner Qt Designer. Så tilføjede jeg trykknappen til vinduet og kaldte det pushButton. I Signals-Slots mode lykkedes det at forbinde knappens klikede signal med MainWindow ButtonClicked slot. Signal/Slot editor ser sådan ud:


Sender   pushButton
Signal   clicked()
Receiver MainWindowClass
Slot     ButtonClicked()


mainwindow.ui-filen blev ændret, hvilket afspejler denne nye information. Men mainwindow.cpp og mainwindow.h forbliver uændrede. Jeg forventer at se stedet hvor jeg kan tilføje min egen kode. Så jeg tilføjede denne kode manuelt:


// mainwindow.h
...
protected slots:
    void ButtonClicked();

// mainwindow.cpp
void MainWindow::ButtonClicked()
{
    QMessageBox msgBox;
    msgBox.setText("Clicked");
    msgBox.exec();
}


Det virker, men jeg spekulerer på, om det er den rigtige måde at gøre dette på. Er slotdeklaration og -implementation tilføjet manuelt, eller mangler jeg noget?

Bedste reference


Hvis du bruger signal/slot editor, skal du tilføje disse koder manuelt. Old Qt Add-In blev automatisk tilføjet disse, hvis du dobbeltklikker på en knap fra designer. Nu er Qt Designer en separat applikation. Dobbeltklikning er ikke muligt.


Du kan også bruge automatiske forbindelser. Med automatiske forbindelser behøver du ikke at forbinde signaler med slots. Funktioner, der har en særlig navngivningskonvention, kaldes automatisk. Ligesom on\_okButton\_clicked. [4]