我的第一个Qt窗口上有一个按钮。单击该按钮时,当前窗口的ui应更改为其他ui文件的ui。现在,当我单击按钮时,会打开一个新窗口,但旧窗口仍然打开。 有没有办法用不同的内容替换当前窗口的内容?或者最好只是打开另一个窗口并销毁第一个窗口?
MainWindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_pushButton_clicked()
{
otherWindow = new OtherWindow();
otherWindow->show();
}
答案 0 :(得分:0)
理论上可以将一个UI替换为另一个UI。
您需要按照以下步骤操作:
setupUi(this)
正如我所说,这是理论上的。这远非实用,因为您的UI类必须从相同的基类派生,并且如果连接到新UI,与第一个UI相关的所有插槽可能会表现得很奇怪。
我可以建议您遵循Model-View-Controller (MVC)设计模式。这是一个建议,其他人可能有更好的建议。
QWidget
的派生类,以充当您的Controller
类。设计将处理View
生成的所有用户事件的所有信号和插槽。Controller
类的私有成员。让我们在Controller类的构造函数中构建所有UI元素,然后连接所有信号和插槽。这将在设计模式中用作View
。 Model
,或者将一个类传递给Controller
类。使用此选项可在View
UI中设置子窗口小部件的所有值。Controller
QWidget传递给QMainWindow
函数setCentralWidget()
,将其设置为用户可以看到的用户界面。setCentralWidget()
上的QMainWindow
更改为相应的用户界面。