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.
Code Block |
---|
//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ä
};
|
Code Block |
---|
// 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():
Code Block |
---|
void on_pushButton_clicked()
{
}
|
Wiki Markup |
---|
Tässä avainsanat siis ovat: _on\_\[widgetin nimi\]\_\[signaalin nimi\]_ |
Linkki Qt:n dokumentaatioon