欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

QT学习笔记----day06

程序员文章站 2022-06-13 14:01:30
...

day01-day05传送门:
day01
day02
day03
day04
day05
今天我来学习一种新的布局:堆栈布局
十、实例十:堆栈布局示例
先看实现效果:
QT学习笔记----day06
这个类似于在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);

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

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

相关标签: qt c++ gui