QT学习笔记----day06

day01-day05传送门:
day01
day02
day03
day04
day05
今天我来学习一种新的布局:堆栈布局
十、实例十:堆栈布局示例
先看实现效果:
在这里插入图片描述
这个类似于在PC上登录微信的时候的那个界面,但是肯定是没有那么复杂的。
没啥好说的,直接上代码:
main.cpp
#include “stackgui.h”
#include

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    StackGui w;
    w.show();

    return a.exec();
}

stackgui.h

#ifndef STACKGUI_H
#define STACKGUI_H

#include <QWidget>
#include <QListWidget>      //列表组件
#include <QStackedWidget>   //堆栈组件
#include <QLabel>
#include <QLineEdit>
#include <QTextEdit>
#include <QHBoxLayout>

class StackGui : public QWidget
{
    Q_OBJECT

public:
    StackGui(QWidget *parent = 0);
    ~StackGui();

};

#endif // STACKGUI_H

stackgui.cpp

#include "stackgui.h"

StackGui::StackGui(QWidget *parent)
    : QWidget(parent)
{
    this->setWindowTitle("堆栈布局示例");
    QListWidget *list = new QListWidget;
    list->setFixedWidth(130);
    list->addItem("第1个标签");
    list->addItem("第2个单行文本框");
    list->addItem("第3个文本域");

    QLabel *label = new QLabel("我是标签");
    QLineEdit *lineedit = new QLineEdit;
    QTextEdit *textedit = new QTextEdit;
    QStackedWidget *stack = new QStackedWidget;
    stack->setFixedWidth(150);
    stack->addWidget(label);
    stack->addWidget(lineedit);
    stack->addWidget(textedit);
    this->connect(list,SIGNAL(currentRowChanged(int)),stack,SLOT(setCurrentIndex(int)));

    QHBoxLayout *main_layout = new QHBoxLayout(this);
    main_layout->addWidget(list);
    main_layout->addWidget(stack);
}

StackGui::~StackGui()
{

}

上面用到的类中,大部分都是之前讲解过的类,只有两个我们比较陌生
QListWidget类 //列表组件
QStackedWidget类 //堆栈组件

QListWidget类 ,这个类很简单,等会儿我们直接看下面示例。
QStackedWidget类实现组件层叠,但它是一个组件,而不是一个容器。 继承层次结构如下所示:
(QObject,QPaintDevice) - QWidget - QFrame - QStackedWidget
构造函数
QStackedWidget(QWidget parent)
常用函数:
addWidget( ),insertWidget( ), removeWidget( ), replaceWidget( ), count( ), currentIndex( ),currentWidget( ),widget( ),setCurrentIndex( )和setCurrentWidget( )等。
QStackedWidget类中新增的方法有:
indexOf(QWidget widget) - 返回组件的索引;
len() - 返回组件的数量,调用len( )时调用。
跟踪组件中的变化,可处理currentChanged和widgetRemoved信号。

使用:
1.先创建组件:

	QListWidget *list = new QListWidget;
    list->setFixedWidth(130);
    list->addItem("第1个标签");
    list->addItem("第2个单行文本框");
    list->addItem("第3个文本域");

2.再创建堆栈组件:

 	QLabel *label = new QLabel("我是标签");
    QLineEdit *lineedit = new QLineEdit;
    QTextEdit *textedit = new QTextEdit;
    QStackedWidget *stack = new QStackedWidget;
    stack->setFixedWidth(150);
    stack->addWidget(label);
    stack->addWidget(lineedit);
    stack->addWidget(textedit);
    this->connect(list,SIGNAL(currentRowChanged(int)),stack,SLOT(setCurrentIndex(int)));

3.在将列表组件和堆栈组件放到一个水平布局里面去:

	QHBoxLayout *main_layout = new QHBoxLayout(this);
    main_layout->addWidget(list);
    main_layout->addWidget(stack);

看着是不是很简单,哈哈哈。

声明一下:这是学习笔记,难免会引用到别人的一些东西(一般都是些概念性的东西),如有冒犯,请您见谅。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

all of the time

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值