QT控件学习:QStackedWidget

卡片式界面布局:QStackedWidget

在很多程序中,需要用到卡片式布局管理(其中卡片式布局就是在一个主界面中,可以实现卡片式切换界面,类似于手机QQ下端的消息、联系人、看点、动态这四个大界面切换一样)。
本文章先说明在QT设计师界面下如何进行设计。StackedWidget位置如下图所示,将其拖入界面中,调整合适的大小。

在这里插入图片描述

  1. 上图右方对象和类你能看到StackedWidget对象和相应的类,其有Page,默认是两个Page页。我自己添加了一个页。
  2. 三个页面相对独立,你想在哪个页面添加什么控件,就从右方点击相应的Page,进入后,默认是空的,你需要自行添加控件。
  3. 当某一个Page页面设计完之后,点击切换到下一个页面。
  4. 经过上述的设计,你就可以将StackedWidget的三个页面都设计完。之后,你要是想通过点击按钮进行切换,就利用代码进行。下方的代码区,我是利用的ListWidget中的Item进行切换界面的
void MainWindow::on_listWidget_clicked(const QModelIndex &index)
{
	//从ListWidget控件中获取现在用户停放在哪一条Item
    int row_list = ui->listWidget->currentRow();
    
    //利用if语句进行判断,也可以利用Switch()
    if(row_list == 0) //如果是ListWidget的第一条Item处
    {
    	//跳到Page1
        ui->stackedWidget->setCurrentIndex(0);
    }
    else if (row_list == 1) 
    {
    	//跳到Page2页面
        ui->stackedWidget->setCurrentIndex(1);
    }
    else if (row_list ==2) 
    {
    	//跳到Page3页面
        ui->stackedWidget->setCurrentIndex(2);
    }
}
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
是的,QStackedWidgetQt提供的一个用于管理多个页面的件。它可以将多个QWidget类型的子件叠放在一起,并在需要时切换它们的显示,从而实现界面切换的效果。具体来说,QStackedWidget有以下几个特点: 1. 可以添加多个QWidget类型的子件,每个子件都代表一个页面。 2. 可以通过setCurrentWidget()函数来设置当前显示的页面。 3. 可以通过currentIndex()函数获取当前显示的页面的索引。 4. 可以通过addWidget()函数添加子件,也可以通过insertWidget()函数在指定位置插入子件。 下面是一个简单的示例代码,演示了如何使用QStackedWidget实现界面切换的效果: ```cpp #include <QApplication> #include <QWidget> #include <QPushButton> #include <QStackedWidget> int main(int argc, char *argv[]) { QApplication app(argc, argv); // 创建一个QStackedWidgetQStackedWidget stackedWidget; // 创建多个QWidget类型的子件,每个子件代表一个页面 QWidget page1(&stackedWidget); QWidget page2(&stackedWidget); QWidget page3(&stackedWidget); // 在每个页面中添加一个按钮,用于切换到其他页面 QPushButton btn1("Page 1", &page1); QPushButton btn2("Page 2", &page2); QPushButton btn3("Page 3", &page3); // 设置按钮的大小和位置 btn1.setGeometry(50, 50, 100, 50); btn2.setGeometry(50, 50, 100, 50); btn3.setGeometry(50, 50, 100, 50); // 将子件添加到QStackedWidget中 stackedWidget.addWidget(&page1); stackedWidget.addWidget(&page2); stackedWidget.addWidget(&page3); // 设置QStackedWidget的大小和位置 stackedWidget.setGeometry(0, 0, 800, 600); // 绑定按钮的点击事件处理函数,用于切换页面 QObject::connect(&btn1, &QPushButton::clicked, [&]() { stackedWidget.setCurrentWidget(&page1); }); QObject::connect(&btn2, &QPushButton::clicked, [&]() { stackedWidget.setCurrentWidget(&page2); }); QObject::connect(&btn3, &QPushButton::clicked, [&]() { stackedWidget.setCurrentWidget(&page3); }); // 设置初始显示的页面 stackedWidget.setCurrentWidget(&page1); // 显示QStackedWidget件 stackedWidget.show(); return app.exec(); } ``` 在这份代码中,我们创建了一个QStackedWidget件,并在其中添加了三个QWidget类型的子件,每个子件代表一个页面。在每个页面中,我们添加了一个QPushButton类型的按钮,用于切换到其他页面。通过setCurrentWidget()函数,我们可以在按钮的点击事件处理函数中切换到相应的页面。最后,我们将QStackedWidget件显示出来,启动应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值