如何创建多 window Qt 应用程序

How to create a multi window Qt application

我有一个主要的window 应用程序是从 qt 小部件创建的。

现在我想给这个mainwindow添加一个child window,这样我就可以不断切换main window和child window

首先,用Qt创建一个新项目然后右击项目名称->添加新... 并制作一个新的 UI class 像这样的图像: ,

现在你有两种形式。 您需要从第一个 class 中的第二个

中创建一个对象

first.h:

#ifndef FIRST_H
#define FIRST_H

#include <QMainWindow>
#include <second.h>
#include <QTimer>

namespace Ui {
class First;
}

class First: public QMainWindow
{
    Q_OBJECT

public:
    explicit First(QWidget *parent = 0);
    ~First();

private slots:
    void on_pushButton_clicked();
    void changeWindow();

private:
    Ui::First *ui;
    Second *second;
    QTimer * timer;
};

#endif // FIRST_H

first.cpp:

#include "first.h"
#include "ui_first.h"

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

    second = new Second();
    timer = new QTimer();
    connect(timer,&QTimer::timeout,this,&First::changeWindow);
    timer->start(1000); // 1000 ms
}

First::~First()
{
    delete ui;
}

void First::changeWindow()
{
    if(second->isVisible())
    {
        second->hide();
        this->show();
    }
    else
    {
        this->hide();
        second->show();
    }
}

void First::on_pushButton_clicked()
{
    second->show();
}

first.pro:

QT       += core gui 

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = First
TEMPLATE = app


SOURCES += main.cpp\
        first.cpp \
    second.cpp

HEADERS  += first.h \
    second.h

FORMS    += first.ui \
    second.ui