QT PushButton

OP #4541126
Lesenswert?
• ▲
▼
Hallo zusammen!

Könnte mir vielleicht jemand mal erläutern, wie ich den Befehl

"void xxx::on_pushButton_clicked()"

richtig benutze?
Der Plan ist, beim Klicken des Buttons eine Verbindung zu einer 
seriellen Schnittstelle herzustellen.

Hatte es so mal versucht,

void com_2::on_pushButton_6_clicked(QPushButton *event1)
{
    if(QPushButton::clicked())
    {
        event1->accept();
        QSerialPort serial;
        serial.setPortName("COM3");
        serial.setBaudRate(QSerialPort::Baud9600);
        serial.setDataBits(QSerialPort::Data8);
        serial.setStopBits(QSerialPort::TwoStop);
        serial.setParity(QSerialPort::NoParity);
        serial.setFlowControl(QSerialPort::NoFlowControl);
        serial.open(QIODevice::ReadWrite);
    }
    else
    {
        event1->ignore();
    }
}

allerdings kommt dasnn folgende Fehlermeldung:

Fehler: cannot call member function 'void 
QAbstractButton::clicked(bool)' without object
     if(QPushButton::clicked())
                             ^

Im Voraus schonmal danke!
Gast #4541235
Lesenswert?
• ▲
▼
(Ich gehe davon aus, du willst einen Toggle-Button, den man mit einem 
Klick anschaltet, und mit dem nächsten Klick wieder ausschaltet, 
korrekt?)

Schritt 1: Gib der Methode einen vernünftigen Namen:

void MeinObject::open_or_close_serial_connection(bool requestedState)

Schritt 2: Definiere (klickibunti) im Designer, dass dein Button beim 
Drücken diese Funktion (Slot) aufrufen soll, in dem du das SIGNAL 
clicked(bool checked = false) mit deinem SLOT verbindest.
Gast #4541308
Lesenswert?
• ▲
▼
> als bedingung für die if-Schleife oder in der Schleife selbst?

Überall. Dieses Problem hat mit Qt nichts zu tun. Ist ein reines C++ 
Problem.

- Statische Methoden rufst du mit Klassennname::Methodenname() auf.
- Normale Methoden mit Variable.Methodenname() bzw. 
Zeiger->Methodenname()

> ich weiß nicht

Nicht so wild. Wenn du dir zu viel auf einmal vorgenommen hast, mach es 
halt in mehreren Schritten. Erst mal ein paar Tutorials durcharbeiten, 
danach die Struktur für dein Programm entwerfen.
#4551057
Lesenswert?
• ▲
▼
Hast du die Funktion selber angelegt und machst es über connect?

Oder hast du es über den Designer erstellen lassen (Rechtsklick -> Slot 
anzeigen) und dort clicked (das Normale ohne bool) ausgewählt?

Normalerweise müsste es so aussehen:
void com_2::on_pushButton_6_clicked()
{
    QSerialPort serial;
    serial.setPortName("COM3");
    serial.setBaudRate(QSerialPort::Baud9600);
    serial.setDataBits(QSerialPort::Data8);
    serial.setStopBits(QSerialPort::TwoStop);
    serial.setParity(QSerialPort::NoParity);
    serial.setFlowControl(QSerialPort::NoFlowControl);
    serial.open(QIODevice::ReadWrite);
}

Ich würde serial global machen. Du willst ja auch bestimmt drauf 
zugreifen zum schreiben oder lesen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren