您的位置:首页 > 编程语言 > Qt开发

Qt学习笔记(五)堆栈窗体QStackWidget与QListWidget的配合使用(通过index切换页面)

2018-03-10 14:05 1316 查看
学习堆栈窗口的时候看的例子都是自动按每一行的顺序切换页面,这次我要自己设置每一行跳到那个页面
一、创建widget工程,添加ui文件
二、ui中拖入一个stack,一个listwidget
三、堆栈窗口每一页添加一个标签,可以右键插入页在后,使有六个页面;双击listwidget,点击图标“+”,添加行,也添加六行;
    注意:stack和list的索引都是从0开始,即第一页、第一行的index都是0,之后递增。可以在右边属性栏里查看堆栈的索引。
界面如下:


代码实现://widget.h
#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

namespace Ui {
class Widget;
}

class Widget : public QWidget
{
Q_OBJECT

public:
explicit Widget(QWidget *parent = 0);
~Widget();

private:
Ui::Widget *ui;

private slots:
void on_list_1_clicked(); //声明槽函数

};

#endif // WIDGET_H
//widget.cpp
#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
/*  ui->list_1->insertItem(0,tr("window1"));  //此处可以自己通过代码添加行,左边为行号,右边为名称
ui->list_1->insertItem(1,tr("window2"));
ui->list_1->insertItem(2,tr("window3"));
ui->list_1->insertItem(3,tr("window4"));
ui->list_1->insertItem(4,tr("window5"));   */
QObject::connect(ui->list_1,SIGNAL(currentRowChanged(int)),ui->stacke_1,SLOT(on_list_1_clicked()));//信号与槽
}

Widget::~Widget()
{
delete ui;
}

void Widget::on_list_1_clicked()
{
int row_list_1=ui->list_1->currentRow(); //currentRow()获取当前行号

if((row_list_1==0)||(row_list_1==3)) //点击第一或第四行切换到第一页
{
ui->stacke_1->setCurrentIndex(0);//为堆栈窗体切换到当前索引
}

else if((row_list_1==1)||(row_list_1==4))
{
ui->stacke_1->setCurrentIndex(1);
}

else if((row_list_1==2)||(row_list_1==5))
{
ui->stacke_1->setCurrentIndex(2);
}
/*   else if(row_list_1==3)
{
ui->stacke_1->setCurrentIndex(3);
}
else if(row_list_1==4)
{
ui->stacke_1->setCurrentIndex(4);
}  */
}
效果图:



以上。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Qt