Qt zweite .ui öffnen



  • Wie kann man eine andere form .ui anzeigen lassen?!



  • Und du meinst, das wäre jetzt eine verständliche Frage?



  • Ich gehe mal davon aus, dass du bereits ein Fenster hast und zB mit einem Button ein zweites Fenster öffnen möchtest.
    Dafür musst du eine zweite Designer-Formularklasse (in meinem Beispiel fenster.h , fenster.cpp und fenster.ui ) anlegen.

    fenster.h

    #ifndef FENSTER_H
    #define FENSTER_H
    
    #include <QWidget>
    
    namespace Ui {
    class Fenster;
    }
    
    class Fenster : public QWidget
    {
        Q_OBJECT
    
    public:
        explicit Fenster(QWidget *parent = 0);
        ~Fenster();
    
    private:
        Ui::Fenster *ui;
    };
    
    #endif // FENSTER_H
    

    fenster.cpp

    #include "fenster.h"
    #include "ui_fenster.h"
    
    Fenster::Fenster(QWidget *parent) :
        QWidget(parent),
        ui(new Ui::Fenster)
    {
        ui->setupUi(this);
    }
    
    Fenster::~Fenster()
    {
        delete ui;
    }
    

    Die fenster.ui bearbeitest du einfach im QtCreator, um sie deinen Wünschen anzupassen.

    In deiner bereits vorhandenen Header-Datei für das erste Fenster, meistens mainwindow.h , fügst du folgendes hinzu:

    public slots:
        void openSecondWindow();
    

    In der mainwindow.ui fügst du einen Button namens button hinzu.

    Bei der mainwindow.cpp musst du die fenster.h einbinden, button connecten und den Befehl zum Öffnen des zweiten Fensters geben. (Siehe Zeile 3, 11 und 19ff);

    mainwindow.h

    #include "mainwindow.h"
    #include "ui_mainwindow.h"
    #include "fenster.h"
    
    MainWindow::MainWindow(QWidget *parent) :
        QMainWindow(parent),
        ui(new Ui::MainWindow)
    {
        ui->setupUi(this);
    
        connect(ui->button, SIGNAL(clicked()), this, SLOT(openSecondWindow()));
    }
    
    MainWindow::~MainWindow()
    {
        delete ui;
    }
    
    void MainWindow::openSecondWindow()
    {
        Fenster *f = new Fenster();
        f->show();
    }
    

Anmelden zum Antworten