【Qt】Qt在VS中实现多窗口显示

文章目录

  • 思路
  • 步骤
    • 基本窗口
    • 新窗口
    • 新对话框
  • 效果
  • 代码

思路

Qt中一个窗口实际上就是一个QMainWindow派生类,在main()函数中使用QMainWindow.show()将其显示出来。因此,如果要实现多窗口,我们只要多创建几个Qt的MainWindow,然后再需要的地方显示出来就好。同理还可以使用新建QDialog派生类的方式,显示新的窗口(对话框)。

步骤

基本窗口

【Qt】Qt在VS中实现多窗口显示_第1张图片
在VS中新建一个名为"multiwindow"的Qt GUI Application项目后,项目中会有如下几个默认文件:
【Qt】Qt在VS中实现多窗口显示_第2张图片
1.multiwindow.ui(xxx.ui):这个文件是打开Qt Designer的,用于可视化设计UI界面;
2.ui_multiwindow.h(ui_xxx.h):这个头文件是使用Qt Designer设计图形界面后生成的代码;
3.multiwindow.h(xxx.h):包含该Qt窗口类定义的头文件,包含槽函数定义等;
4.multiwindow.cpp(xxx.cpp):该Qt窗口的源文件,包含各种具体实现等。

multiwindow.ui中使用Qt Designer设计如下包含2个pushButton的界面:
【Qt】Qt在VS中实现多窗口显示_第3张图片

新窗口

项目中点击添加新项,如下图,选择Qt中的Qt MainWindow Form File,这是新增一个Qt窗口。
【Qt】Qt在VS中实现多窗口显示_第4张图片
之后会在项目中添加一个新的newWindow.ui(xxx.ui)和ui_newWindow.h(ui_xxx.h)。
【Qt】Qt在VS中实现多窗口显示_第5张图片
点开newWindow.ui,这就是新窗口的设计界面:
【Qt】Qt在VS中实现多窗口显示_第6张图片
注意:在设计新窗口之前,我们最好把红色框位置默认的窗口名称MainWindow改了,这个是生成代码后的类名称。如果不改的话,在下一次新建窗口后,还是这个名称,会发生重名问题。
【Qt】Qt在VS中实现多窗口显示_第7张图片
刚才在添加新项之后,仅生成了xxx.ui文件和其对应的ui_xxx.h头文件,还缺少该窗口类的头文件和源文件,需要我们自己添加。
【Qt】Qt在VS中实现多窗口显示_第8张图片
newWindow.h头文件和newWindow.cpp源文件的内容,我们可以参考默认窗口的头文件和源文件。下面给出范例:

newWindow.h

#pragma once

#include 
#include "ui_newWindow.h"

class newWindow : public QMainWindow
{
	Q_OBJECT

public:
	newWindow(QWidget *parent = Q_NULLPTR);

private:
	Ui::newWindow ui;
};

newWindow.cpp

#include "newWindow.h"

newWindow::newWindow(QWidget *parent)
	: QMainWindow(parent)
{
	ui.setupUi(this);
}

这个newWindow就是新窗口的类,之后我们只需要在基本窗口中包含这个头文件,并且定义一个newWindow对象就可以使用这个新窗口了。

新对话框

新对话框的方式实际上和窗口类似,只是在定义类的头文件时,继承的应该是QDialog类。
项目中点击添加新项,如下图,选择Qt中的Qt Dialog Form File,这是新增一个Qt窗口。图中第一个和第二个的区别在于生成的对话框中“ok”和“cancel”按钮的位置一个在下边,一个在右边。
【Qt】Qt在VS中实现多窗口显示_第9张图片
同样,我们需要在ui中修改名称,并且为其添加头文件源文件
【Qt】Qt在VS中实现多窗口显示_第10张图片
【Qt】Qt在VS中实现多窗口显示_第11张图片
在头文件中定义对话框类时,注意继承的是QDialog类,下面给出范例:

newDialog.h

#pragma once

#include 
#include "ui_newDialog.h"

class newDialog : public QDialog
{
	Q_OBJECT

public:
	newDialog();

private:
	Ui::newDialog ui;
};

newDialog.cpp

#include "newDialog.h"

newDialog::newDialog()
{
	ui.setupUi(this);
}

这个newDIalog就是新对话框的类,之后我们只需要在基本窗口中包含这个头文件,并且定义一个newDIalog对象就可以使用这个新对话框了。

效果

【Qt】Qt在VS中实现多窗口显示_第12张图片

代码

由于文件较多,直接打包给大家提供下载链接。
https://download.csdn.net/download/qinchang1/10961920
(这个积分好像默认的,可能文件比较大,所以要5积分,不是会员不建议下载)

如有错误,欢迎指正!

你可能感兴趣的:(Qt)