如何创建一个多窗口Qt应用程序

时间:2017-07-10 10:40:08

标签: qt qt4 qt5 qtgui

我有一个从qt小部件创建的主窗口应用程序。

现在我想在这个主窗口中添加一个子窗口,以便我可以连续切换主窗口和子窗口

1 个答案:

答案 0 :(得分:2)

首先使用Qt创建一个新项目,然后右键单击项目名称 - >添新... 并创建一个像这个图像的新UI类: image oneimage two

现在你有两种形式。 你需要在First中用Second类创建一个对象。

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();
}

fisrt.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

First form ui