Qt-Gui Anwendung - Wer findet den Fehler?



  • Servus.
    Beschäftige mich momentan mit Qt-GUI-Anwendungen (C++) und wollte einen Pushbutton erstellen und diesen via connect-Anweisung mit dem Formular verbinden. Nach Klick auf den Buton soll das Fenster schließen. Bei mir öffnet sich aber nicht mal das Formular...

    #include "mainwindow.h"
    #include <QApplication>
    #include <QPushButton>
    #include <QMainWindow>

    int main(int argc, char *argv[])
    {
    QApplication a(argc, argv);
    QMainWindow *w = new QMainWindow();

    QPushButton *pushButton1 = new QPushButton(w);
    pushButton1->setGeometry(10, 20, 50, 25);
    pushButton1->setText("Schließe");

    QObject::connect(pushButton1, SIGNAL(clicked()), &a, SLOT(quit()));

    return a.exec();
    }

    Er gibt manchmal eine Fehlermeldung aus, und manchmal nicht...
    Folgende zwei Meldungen werden gelegentlich angezeigt:
    cannot open output file debug\untitled472.exe: Permission denied
    error: Id returned 1 exit status

    danke für jede Hilfe!



  • Bei deinem Code fehlt noch das Anzeigen des Fensters:

    w->show();
    

    Besser ist es jedoch, wenn du eine eigene MainWindow-Klasse erstellst, so daß der Code in der Funktion 'main' kurz und knapp ist, s.a. Qt Application Example.

    Und die Fehlermeldung kommt beim Kompilieren, wenn die Datei noch ausgeführt wird (weil der Prozess noch läuft), d.h. diesen mußt du mit dem TaskManager beenden.



  • Danke Dir, Th69! Nun funktionert es. Muss wohl irgendwie die show()-Anweisung vergessen/gelöscht haben.

    Danke für den Tipp und den Link. Leider ist mein englisch zu schlecht.



  • Eine deutsche Übersetzung eines Qt-Beispielprojektes gibt es unter Einstieg in die Programmierung mit Qt sowie Qt für C++ - Anfänger.



  • Nice, danke für die Links!

    Ich habe bereits was versucht. Ich weiß nur noch nicht wie ich die neue Methode in der main() aufrufen kann. Mag mir jemand helfen?

    QUELL-DATEI:

    #include "mainwindow.h"
    #include "ui_mainwindow.h"
    #include <QPushButton>

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

    MainWindow::~MainWindow()
    {
    delete ui;
    }
    void MainWindow::erstelleWidgets(QMainWindow *w, QApplication a)
    {
    QPushButton *pushButton1 = new QPushButton(w);
    pushButton1->setGeometry(10, 20, 50, 25);
    pushButton1->setText("Schließe");

    QObject::connect(pushButton1, SIGNAL(clicked()), &a, SLOT(quit()));

    }

    HEADER-DATEI:

    #ifndef MAINWINDOW_H
    #define MAINWINDOW_H

    #include <QMainWindow>

    namespace Ui {
    class MainWindow;
    }

    class MainWindow : public QMainWindow
    {
    Q_OBJECT

    public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
    void erstelleWidgets(QMainWindow, QApplication);

    private:
    Ui::MainWindow *ui;
    };

    #endif // MAINWINDOW_H

    MAIN.CPP-DATEI:

    #include "mainwindow.h"
    #include <QApplication>
    #include <QPushButton>
    #include <QMainWindow>

    int main(int argc, char *argv[])
    {
    QApplication a(argc, argv);
    QMainWindow *w = new QMainWindow();

    w->show();
    return a.exec();
    }


Anmelden zum Antworten