Signaalit ja slotit Qt:n dokumentaatiossa
Signaali lähettää viestin ja slot ottaa sen vastaan. seuraavassa esimerkissä viedään teksti lineEdit ruudusta toiseen ruutuun. Tee dialogi sovellus.
//tämä on luokan kuvaus ja se on aina xxx.h tiedostossa class Dialog : public QDialog //luokka Dialog periytyy QDialog luokasta, joka on yksi Qt:n perusluokkia { Q_OBJECT public: explicit Dialog(QWidget *parent = 0); //tämä on muodostimen esittely, muodostin "ajetetaan" ohjelman alkaessa ~Dialog(); //tämä on hajottimen esittely //tähän voit lisätä omia muuttujia ja funktioita esim. int laskuri; private: Ui::Dialog *ui; //tähän voit lisätä omia yksityisiä muuttujia ja fuinktioitapublic slots: // Oma slot-funktio tekstin siirtoa varten private slots: void SiirraTeksti(); // Lisää tämä };
// Muodostin, tämän wizard teki automaattisesti Dialog::Dialog(QWidget *parent) : QDialog(parent), ui(new Ui::Dialog) { ui->setupUi(this); // kiinnitetään siirtonapin signaali clicked slotiin SiirraTeksti, tämä pitää tehdä itse connect(ui->siirtonappi,SIGNAL(clicked()),this,SLOT(SiirraTeksti())); } // Hajoitin Dialog::~Dialog() { delete ui; } // Oma slot funktio joka siirtää tekstin ylhäältä alas void Dialog::SiirraTeksti() { QString Apu; // Haetaan käyttöliittymästä lahde lineEdit ruudusta teksti Apu=ui->lahde->text(); // Laitetaan teksti käyttöliittymään kohde lineEdit ruutuun ui->kohde->setText(Apu); // Putsataan lahde lineEdit ui->lahde->clear(); } // SiirraTeksti funktion loppu
Automaattiset signaali-slot yhteydet
Tietyllä tavalla nimetyt slotit yhdistetään automaattisesti signaaleihin. Jos esimerkiksi käyttöliittymässä on pushButton-niminen nappi, niin alla oleva slot yhdistetään automaattisesti sen signaaliin clicked():
void on_pushButton_clicked() { }
Tässä avainsanat siis ovat: on_[widgetin nimi]_[signaalin nimi]