PushButton Aktion ausführen

Alles rund um die Programmierung mit Qt
Antworten
anno1988
Beiträge: 280
Registriert: 23. Januar 2009 20:49

PushButton Aktion ausführen

Beitrag von anno1988 »

Hallo zusammen,

ich habe mir mal die QT IDE Greenhouse heruntergeladen und versuche gerade damit zu programmieren.

Code: Alles auswählen

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent), ui(new Ui::MainWindowClass)
{
    ui->setupUi(this);

    connect(ui->btn_Test, SIGNAL(clicked()), this, SLOT(test()));

}

Ich versuche auf eine Aktion zu reagieren. Dabei handelt es sich um die Aktion Click.

Da drin will ich dann einfach mal eine MessageBox aufrufen. passieren tut allerdings nichts.

Code: Alles auswählen


void MainWindow::test() {

    QMessageBox msg;

    msg.setText("asd");
    msg.exec();

}

was mache ich da falsch?
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

connect() gibt einen Statuswert zurück ob das connect funktioniert hat. Außerdem wird eine Fehlermeldung auf der Konsole ausgegeben. Ich tippe auf ein fehlendes Q_OBJECT.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
anno1988
Beiträge: 280
Registriert: 23. Januar 2009 20:49

Beitrag von anno1988 »

wie mache ich das richtige mit dem Q_OBJECT, dass es funktioniert?
CLRS530
Beiträge: 155
Registriert: 8. Oktober 2007 18:00

Beitrag von CLRS530 »

Naja folgendes:
Q_OBJECT muss in der Klasse gesetzt sein. Aber da du das MainWindow benutzt und die Klasse wohl generiert wurde nehme ich an, dass es schon geschehen ist.
Q_OBJECT muss vor dem ersten public: oder so geschrieben werden.

Code: Alles auswählen

class MainWindow:
    public QMainWindow
{
    Q_OBJECT
public:
//..
};
Nur als kleines Beispiel.
Desweiteren musst du void test in der Klasse als public slots deklarieren, also so:

Code: Alles auswählen

class MainWindow:
    public QMainWindow
{
    Q_OBJECT
public:
//..
public slots:
void test();
};
Irgend eine der beiden Sachen hast du wohl nicht befolgt.
anno1988
Beiträge: 280
Registriert: 23. Januar 2009 20:49

Beitrag von anno1988 »

wunderbar, ha tfunktioniert, danke :D :D
Antworten