Wiki Markup |
---|
[Signaalit ja slotit Qt:n |
...
Signaali lähettää viestin ja slot ottaa sen vastaan. seuraavassa esimerkissä viedään teksti lineEdit ruudusta toiseen ruutuun. Tee dialogi sovellus.
Code Block |
---|
dokumentaatiossa|http://doc.qt.nokia.com/latest/signalsandslots.html]
Signaali lähettää viestin ja slot ottaa sen vastaan. seuraavassa esimerkissä viedään teksti lineEdit ruudusta toiseen ruutuun. Tee dialogi sovellus.
{code}
//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 |
{code} {code} // 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 |
...
{code} h3. 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 |
} void on_pushButton_clicked() { } {code} |
...
Tässä avainsanat siis ovat: _on\_\[widgetin nimi\]\_\[signaalin nimi\]_ |
...
[Linkki Qt:n dokumentaatioon|http://doc.qt.nokia.com/latest/designer-using-a-ui-file.html#automatic-connections] |