1、Qt Creator中进行界面跳转
参照:https://blog.csdn.net/qq_40785363/article/details/79527343
比较容易,但注意以下几点:
(1)除了在新建项目时,会有一个ui界面,再添加第二个ui界面时,要注意选择Dialog界面模版!
原因是:为了保证按第一个ui界面的button按钮时,会跳转到第二个ui界面,为了保证第二个ui界面不是一闪而过,需要如下语句
Dialog2 d;
d.exec();
如果不是Dialog类型的模版, 而是选择了Widget模版,d.exec();这句话就会报错。因为:exec()函数是Dialog的函数。
(2)正如上篇博客所说:一定要在第一个窗体的头文件里(dialog.h)声明
(3)然后在第一个界面的ui文件里创建一个pushbutton并且转到槽,点击pushbutton按钮,右键转到槽,就可以在槽中写按一下这个按钮需要出现什么功能的代码了。
转到槽后有什么变化:
a、会在主窗口的.h文件中出现:
private slots:
void on_pushButton_clicked();
b、会在主窗口的.cpp文件中出现:
void Dialog::on_pushButton_clicked()
{
....................//可以写按按钮时 需要实现的功能
}
2、VS的Qt插件中实现ui界面跳转
总的来说就是和上面类似,只是VS没有转到槽这个功能(好像有,但是我不会用),所以需要自己手写一下,按住按钮需要实现什么功能
参考:https://zhidao.baidu.com/question/812102274194870372.html
1、新建一个Qt的GUI Application的项目,然后我选择的还是QWidget作为基类
2、选中项目名字——添加——Add Qt Class——QtGuiClass——基类选择QDialog(原因和在Qt中一样,见上面注意(1))
3、在第一个ui界面,即MyWidget的ui界面上添加一个按钮pushButton,为了区分,在第二个界面,即Dialog1的ui界面我添加了一个日历
4、在主窗口的.h文件中添加,即MyWidget,h中添加:
(1)添加窗口二的头文件,即:#include "Dialog1.h"
(2)添加定义一个槽函数:
private slots:
void slotclicked();
MyWidget.h中的代码:
#include <QtWidgets/QWidget>
#include "ui_MyWidget.h"
//添加头文件
#include "Dialog1.h"
class MyWidget : public QWidget
{
Q_OBJECT
public:
MyWidget(QWidget *parent = Q_NULLPTR);
private:
Ui::MyWidgetClass ui;
//声明槽函数
private slots:
void slotclicked();
};
5、来到MyWidget.cpp文件下,来定义槽函数,并将按钮和槽函数建立起联系
(1)信号和槽函数建立联系:构造函数中添加connect函数,连接信号与槽
connect(ui.pushButton, SIGNAL(clicked()), this, SLOT(slotclicked()));
(2)定义槽函数:
//定义槽函数
void MyWidget::slotclicked()
{
.............//要实现的功能的代码
}
MyWidget.cpp中的代码:
#include "MyWidget.h"
MyWidget::MyWidget(QWidget *parent)
: QWidget(parent)
{
ui.setupUi(this);
//连接信号和槽
connect(ui.pushButton, SIGNAL(clicked()), this, SLOT(slotclicked()));//注意ui.pushButton,因为butoon是我们自己拖过来的,所以要写那个按钮的名字,才可以识别
}
//定义槽函数
void MyWidget::slotclicked()
{
Dialog1 d;
d.exec();
}
运行结果:
哈哈哈哈哈好像写的有点白痴,问题是,我真的不会呀,,,