QT之多个界面相互切换。。。。。。

柴鸡,听说你的QT界面只能单一显示,我笑出了八腹肌;接下来看大神怎么操作吧,上才艺。

                                                                QT大神武林宝典

                                切忌:一、该功法只适合18岁以上25岁以下,无妻无儿无负担的美男子;

                                          二、欲练此功,亦先自宫;三、注意要看完。

1.QT界面切换大法之隐身术

该术法主要讲解一个界面窗口可以变换成另外一个界面窗口;比如QQ登陆界面,输入账号密码之后点击登陆就会跳到另外一个界面,然后登陆界面消失不见。

2.QT界面切换大法之七十二变

该术法主要讲解一个界面窗口可以变换多种不同内容;比如PPT自动播放一样,点一下就下一页,就是界面一样内容不同。

效果图:

上代码:首先新建一个QT项目工程,路径不能有中文,如下图

在主界面moreui.ui文件下添加stackedWidget控件,用来显示多个界面相互切换显示在主界面上;如下图所示:

注意:以下两个页要删除;删除步骤:在控件里面点击右键,会看到一个有2的页的选项,然后选择删除,两个都要删除。

其他.ui的文件界面按照自己需要添加。

最后,在主界面的.h文件里面添加其他界面的头文件如下:

还要定义一个指针类型变量,用来引用调用;

主界面函数代码如下:

#include "moreui.h"
#include "ui_moreui.h"

moreui::moreui(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::moreui)
{
    ui->setupUi(this);

    //申请三歌界面
    form1 = new oneForm;
    form2 = new twoForm;
    form3 = new threeForm;

    //把上一步申请的三个界面添加到stackedWidget控件
    //注意添加的顺序
    ui->stackedWidget->addWidget(form1);
    ui->stackedWidget->addWidget(form2);
    ui->stackedWidget->addWidget(form3);
}

moreui::~moreui()
{
    delete ui;
}
//下面的是槽函数
void moreui::on_pushButton_clicked()
{
     ui->stackedWidget->setCurrentIndex(0);
}

void moreui::on_pushButton_2_clicked()
{
     ui->stackedWidget->setCurrentIndex(1);
}

void moreui::on_pushButton_3_clicked()
{
     ui->stackedWidget->setCurrentIndex(2);
}

槽函数可以通过主界面的.ui文件里面的显示控件按钮点击右键跳转到槽,就可以直接得到上面的槽函数,然后在槽函数写代码。

3.QT界面切换大法之老树盘根(树形)

该术法主要讲解一个界面窗口可以像树一样一节一节向树支外面扩展变换多种不同内容;比如下面的效果图。

                                                        四、不自宫亦能练此功。

  • 23
    点赞
  • 211
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
Qt中实现多界面相互切换可以使用QStackedWidget控件。QStackedWidget是一个容器控件,可以在里面添加多个QWidget对象,每次只显示其中一个QWidget对象,其他QWidget对象都被隐藏。通过QStackedWidget的setCurrentIndex()函数可以切换到指定的QWidget对象。 以下是一个简单的示例代码,展示如何在Qt中使用QStackedWidget实现多界面相互切换: ```c++ #include <QtWidgets> int main(int argc, char *argv[]) { QApplication app(argc, argv); QStackedWidget stackedWidget; QWidget *page1 = new QWidget; QLabel *label1 = new QLabel("Page 1"); QVBoxLayout *layout1 = new QVBoxLayout; layout1->addWidget(label1); page1->setLayout(layout1); QWidget *page2 = new QWidget; QLabel *label2 = new QLabel("Page 2"); QVBoxLayout *layout2 = new QVBoxLayout; layout2->addWidget(label2); page2->setLayout(layout2); stackedWidget.addWidget(page1); stackedWidget.addWidget(page2); QPushButton *button1 = new QPushButton("Page 1"); QPushButton *button2 = new QPushButton("Page 2"); QHBoxLayout *hLayout = new QHBoxLayout; hLayout->addWidget(button1); hLayout->addWidget(button2); QVBoxLayout *vLayout = new QVBoxLayout; vLayout->addLayout(hLayout); vLayout->addWidget(&stackedWidget); QWidget window; window.setLayout(vLayout); window.show(); QObject::connect(button1, &QPushButton::clicked, &stackedWidget, [=]() { stackedWidget.setCurrentIndex(0); }); QObject::connect(button2, &QPushButton::clicked, &stackedWidget, [=]() { stackedWidget.setCurrentIndex(1); }); return app.exec(); } ``` 在这个示例中,我们使用了QStackedWidget控件,并在其中添加了两个QWidget对象。然后我们创建了两个QPushButton按钮,用于切换到不同的QWidget对象。在按钮的clicked信号中,我们通过setCurrentIndex()函数切换到指定的QWidget对象。 注意:为了保证切换时的流畅度,建议在添加QWidget对象时,设置其布局管理器,以便更好地控制QWidget的大小和位置。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值