1、前言
这是一个系列博客,我将自己学习Qt的过程已经自己写的整理的代码都会放到博客上,希望能够帮到大家哦。
学习QT或者说学习软件界面制作最基础的一个功能就是界面跳转吧,网上讲的都太复杂了,我这里给出一个简单的版本,C++版本和python(PyQt5、PySide)版本都有。
代码在Github网址:https://github.com/cssdcc1997/qt_learning
Python版:还未更新
先上效果图:
效果:
Gif图:
2、代码C++
main.cpp
代码:
#include "mainwindow.h"
#include <QApplication>
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
QApplication a(argc, argv); //创建一个QApplication对象
MainWindow w; //创建一个定义好的窗口对象w,MainWindow
w.show(); //显示窗口
return a.exec();
}
都是常规的操作,一般不用管,在生成Qt项目的时候会自动生成如上代码。
mainwindow.cpp
代码:
#include "mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
resize(400,300);
m_form2 = new Form2;
go_to_form2_btn = new QPushButton;
present_form_label = new QLabel;
go_to_form2_btn->setText(tr("跳转至界面2"));
present_form_label->setText(tr("现在是界面1"));
present_form_label->setAlignment(Qt::AlignCenter);
QVBoxLayout *layout = new QVBoxLayout;
layout->addWidget(present_form_label);
layout->addWidget(go_to_form2_btn);
QWidget *centralWidget = new QWidget(this);
centralWidget->setLayout(layout);
setCentralWidget(centralWidget);
connect(go_to_form2_btn, SIGNAL(clicked()), SLOT(on_go_to_form2()));
}
MainWindow::~MainWindow()
{
delete m_form2; //析构函数,释放资源
}
void MainWindow::on_go_to_form2()
{
m_form2->show();
}
mainwindow里定义了一个label和一个按键,按键通过信号槽机制绑定到函数on_go_to_form2()
,当按下按键后执行该函数。可以看到函数只有一句话,就是让实现定义好的对象m_form2
进行显示。
下面给出form2.cpp
代码:
#include "form2.h"
Form2::Form2(QWidget *parent) : QWidget(parent)
{
resize(400,300);
back_to_form1_btn = new QPushButton;
present_form_label = new QLabel;
back_to_form1_btn->setText(tr("跳转至界面1"));
present_form_label->setText(tr("现在是界面2"));
present_form_label->setAlignment(Qt::AlignCenter);
QVBoxLayout *layout = new QVBoxLayout;
layout->addWidget(present_form_label);
layout->addWidget(back_to_form1_btn);
setLayout(layout);
connect(back_to_form1_btn, SIGNAL(clicked()), SLOT(on_back_to_form1()));
}
Form2::~Form2()
{
}
void Form2::on_back_to_form1()
{
this->close();
}