lv20 QT 常用控件 2

1 QT GUI 类继承简介

布局管理器

输出控件

输入控件

按钮

容器

2 按钮示例

cpp 复制代码
#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QCheckBox>
#include <QLineEdit>
#include <QPushButton>

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = 0);
    ~Widget();
private slots:
    void setpass(bool flag);
private:
    QLineEdit *le;
    QCheckBox *ck;
    QPushButton *pb;



};



#endif // WIDGET_H
cpp 复制代码
#include "widget.h"
#include <QVBoxLayout>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    le = new QLineEdit;
    le->setEchoMode(QLineEdit::Password);   //显示模式为密码
    ck = new QCheckBox("show Password");
    pb = new QPushButton("clear");

    QVBoxLayout *vbox = new QVBoxLayout;
    vbox->addWidget(le);
    vbox->addWidget(ck);
    vbox->addWidget(pb);
    this->setLayout(vbox);

    connect(pb, SIGNAL(clicked(bool)), le , SLOT(clear()));
    connect(ck, SIGNAL(clicked(bool)), this , SLOT(setpass(bool)));  //点击chechbox会显示密码,setpass(bool) 是接收信号的对象的槽函数,所以用this
}

void Widget::setpass(bool flag)
{
    if(!flag)
        le->setEchoMode(QLineEdit::Password);
    else
        le->setEchoMode(QLineEdit::Normal);
}

Widget::~Widget()
{

}

效果

3 容器

3.1 Group box

cpp 复制代码
#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QGroupBox>
#include <QRadioButton>

class Widget : public QWidget
{
    Q_OBJECT

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

private:
    QGroupBox *gb;

    QRadioButton *r1, *r2, *r3;
};

#endif // WIDGET_H
cpp 复制代码
#include "widget.h"
#include <QVBoxLayout>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    gb = new QGroupBox("choice", this);

    r1 = new QRadioButton("aaaa");
    r2 = new QRadioButton("bbbb");
    r3 = new QRadioButton("cccc");

    QVBoxLayout *vbox = new QVBoxLayout;
    vbox->addWidget(r1);
    vbox->addWidget(r2);
    vbox->addWidget(r3);

    gb->setLayout(vbox);

    QVBoxLayout *mainbox = new QVBoxLayout;
    mainbox->addWidget(gb);
    this->setLayout(mainbox);
}

Widget::~Widget()
{

}

效果

3.2 ScrollArea

cpp 复制代码
#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QLabel>
#include <QScrollArea>

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = 0);
    ~Widget();
private:
    QLabel *lb;
    QScrollArea *sa;
};

#endif // WIDGET_H
cpp 复制代码
#include "widget.h"
#include <QVBoxLayout>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    //创建一个 QLabel 控件,并将一张名为 "1.jpg" 的图片显示在该 QLabel 上。
    lb = new QLabel(this);
    QPixmap pix("1.jpg");  //加载图片
    lb->setPixmap(pix);

    sa = new QScrollArea(this);
    sa->setWidget(lb);

    QVBoxLayout *mainbox = new QVBoxLayout;
    mainbox->addWidget(sa);
    this->setLayout(mainbox);
}

Widget::~Widget()
{

}

效果

3.3 TabWidget

管理多个标签页(Tab)的容器控件。它提供了一个便捷的方式来显示和切换多个页面

cpp 复制代码
#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QTabWidget>
#include <QTextEdit>

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = 0);
    ~Widget();
private:
    QTabWidget *tw;
    QTextEdit *te1, *te2, *te3;
};

#endif // WIDGET_H
cpp 复制代码
#include "widget.h"
#include <QVBoxLayout>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    tw = new QTabWidget;

    te1 = new QTextEdit("11111111");
    te2 = new QTextEdit("112221111");
    te3 = new QTextEdit("11113333");

    tw->addTab(te1, "1.c");
    tw->addTab(te2, "2.c");
    tw->addTab(te3, "3.c");

    QVBoxLayout *mainbox = new QVBoxLayout;
    mainbox->addWidget(tw);
    this->setLayout(mainbox);
}

Widget::~Widget()
{

}

效果

3.4 StackedWidget

堆叠窗口控件,可以用来管理多个子部件,但一次只能显示其中一个子部件

cpp 复制代码
#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QStackedWidget>
#include <QTextEdit>
#include <QComboBox>

class Widget : public QWidget
{
    Q_OBJECT

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

private:
    QStackedWidget *sw;

    QTextEdit *te1, *te2, *te3;

    QComboBox *cb;

};

#endif // WIDGET_H
cpp 复制代码
#include "widget.h"
#include <QVBoxLayout>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    sw = new QStackedWidget;

    te1 = new QTextEdit("aaaa");
    te2 = new QTextEdit("aaadsfasdfasdfa");
    te3 = new QTextEdit("aaasdfaaa");

    sw->addWidget(te1);
    sw->addWidget(te2);
    sw->addWidget(te3);

    cb = new QComboBox;
    cb->addItem("1111");
    cb->addItem("2222");
    cb->addItem("3333");

    QVBoxLayout *mainbox = new QVBoxLayout;
    mainbox->addWidget(sw);
    mainbox->addWidget(cb);
    this->setLayout(mainbox);

    connect(cb, SIGNAL(activated(int)), sw, SLOT(setCurrentIndex(int)));
}

Widget::~Widget()
{

}

效果

3.5 Toolbox

折叠面板控件,通常用于显示多个分组的相关内容

cpp 复制代码
#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QToolBox>
#include <QPushButton>

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = 0);
    ~Widget();
private:
    QToolBox *tb;

    QPushButton *pb[3];
};

#endif // WIDGET_H
cpp 复制代码
#include "widget.h"
#include <QVBoxLayout>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    tb = new QToolBox;

    pb[0] = new QPushButton("aaa");
    pb[1] = new QPushButton("bbb");
    pb[2] = new QPushButton("ccc");

    tb->addItem(pb[0], "11111");
    tb->addItem(pb[1], "22222");
    tb->addItem(pb[2], "33333");

    QVBoxLayout *mainbox = new QVBoxLayout;
    mainbox->addWidget(tb);
    this->setLayout(mainbox);
}

Widget::~Widget()
{

}

效果(类似消息框)

相关推荐
m0_736919101 小时前
C++代码风格检查工具
开发语言·c++·算法
2501_944934731 小时前
高职大数据技术专业,CDA和Python认证优先考哪个?
大数据·开发语言·python
黎雁·泠崖2 小时前
【魔法森林冒险】5/14 Allen类(三):任务进度与状态管理
java·开发语言
2301_763472463 小时前
C++20概念(Concepts)入门指南
开发语言·c++·算法
TechWJ3 小时前
PyPTO编程范式深度解读:让NPU开发像写Python一样简单
开发语言·python·cann·pypto
lly2024064 小时前
C++ 文件和流
开发语言
m0_706653234 小时前
分布式系统安全通信
开发语言·c++·算法
寻寻觅觅☆4 小时前
东华OJ-基础题-104-A == B ?(C++)
开发语言·c++
杨了个杨89824 小时前
memcached部署
qt·websocket·memcached
lightqjx5 小时前
【C++】unordered系列的封装
开发语言·c++·stl·unordered系列