Qt: Auf Button Click Slot ansprechen



  • Hallo,
    im Moment handhabe ich das so:

    connect(this,SIGNAL(sendData(QString)),t1,SLOT(writeData(QString)));
    .
    .
    .
    void MainWindow::on_SendButton_clicked() {
        if(t1->isRunning()) {
            emit sendData(SendTextEdit->toPlainText());
        }
    }
    
    void SerialThread::writeData(QString data){
        port->write(data.toAscii());
    }
    

    Kann man das noch eleganter lösen?



  • verwende const QString& . QString kopiert sich zwar recht flott, aber herausfordern muss man es trotzdem nicht

    Ansonsten sollte es passen. Hauptsache, es funktioniert und ist nicht völlig falsch



  • Also faktisch so:

    void writeData(const QString &data);
    ...
        void sendData(const QString &data);
    ...
    
        connect(this,SIGNAL(sendData(const QString&)),t1,SLOT(writeData(const QString&)));
    

    Nur wie schaut es bei so was aus:

    connect(NameComboBox,SIGNAL(currentIndexChanged(QString)),this,SLOT(onNameChanged(QString)));
    

    Da gibt es ja gar keine Möglichkeit, dass per ref zu übergeben, oder?



  • sie dir mal das Signal der ComboBox genau an.

    Dessen Signatur sieht so aus:

    currentIndexChanged(const QString&)
    

Anmelden zum Antworten