Seite 1 von 1

PushButton Aktion ausführen

Verfasst: 31. Januar 2009 21:14
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?

Verfasst: 31. Januar 2009 21:56
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.

Verfasst: 31. Januar 2009 22:18
von anno1988
wie mache ich das richtige mit dem Q_OBJECT, dass es funktioniert?

Verfasst: 31. Januar 2009 23:17
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.

Verfasst: 1. Februar 2009 00:36
von anno1988
wunderbar, ha tfunktioniert, danke :D :D