QT-常用控件
GUI继承简介
布局管理器
#include "widget.h"
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QGridLayout>
#include <QFormLayout>
Widget::Widget(QWidget *parent)
: QWidget(parent)
{
le = new QLineEdit(this);
le1 = new QLineEdit(this);
pb = new QPushButton("OK", this);
#if 1
QFormLayout *fbox = new QFormLayout;//表格布局
fbox->addRow("user", le);//能显示文字的标签控件
fbox->addRow("pawd", le1);
fbox->addRow("", pb);
this->setLayout(fbox);
#endif
#if 0
QVBoxLayout *vbox = new QVBoxLayout;//垂直布局管理器
vbox->addWidget(le);
vbox->addWidget(le1);
vbox->addWidget(pb);
this->setLayout(vbox);
#endif
#if 0
QHBoxLayout *hbox = new QHBoxLayout;//水平布局
hbox->addWidget(le);
hbox->addWidget(le1);
hbox->addWidget(pb);
this->setLayout(hbox);
#endif
#if 0
QGridLayout *gbox = new QGridLayout;//网状布局
gbox->addWidget(le, 0, 0);
gbox->addWidget(le1, 1, 1);
gbox->addWidget(pb, 2, 2);
this->setLayout(gbox);
#endif
}
Widget::~Widget()
{
}
输入输出控件
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QLineEdit>//行输入
#include <QTextEdit>//输入多行
#include <QComboBox>//下拉列表框控件
#include <QTimeEdit>//选择数值的圆形滑动条控件
#include <QDial>//选择数值的圆形滑动条控件
#include <QSlider>//滑动条
#include <QScrollBar>//滚动条
#include <QLabel>//显示文本和图像控件
#include <QLCDNumber>//显示数字控件
#include <QProgressBar>//显示进度控件
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = 0);
~Widget();
private:
//input
QLineEdit *le;
QTextEdit *te;
QComboBox *cb;
QTimeEdit *timee;
QDial *dl;
QSlider *sd;
QScrollBar *sb;
//output
QLabel *lb, *lb1;
QLCDNumber *lcd;
QProgressBar *pgb;
};
#endif // WIDGET_H
#include "widget.h"
#include <QVBoxLayout>//垂直布局
#include <QHBoxLayout>//水平布局
Widget::Widget(QWidget *parent)
: QWidget(parent)
{
//input
le = new QLineEdit(this);
te = new QTextEdit;
cb = new QComboBox;
cb->addItem("read");//向一个列表或下拉框控件中添加新的项
cb->addItem("write");
timee = new QTimeEdit;
dl = new QDial;
sd = new QSlider;
sd->setOrientation(Qt::Horizontal);//控制控件方向的函数
sb = new QScrollBar;
sb->setOrientation(Qt::Horizontal);
QVBoxLayout *vbox = new QVBoxLayout;
vbox->addWidget(le);
vbox->addWidget(te);
vbox->addWidget(cb);
vbox->addWidget(timee);
vbox->addWidget(dl);
vbox->addWidget(sd);
vbox->addWidget(sb);
//output
lb = new QLabel("hello");
lb1 = new QLabel;
QPixmap pix("1.png");//QPixmap是Qt中用于处理图像的类之一。它可以用于创建、显示和操作图像。QPixmap类提供了一系列函数,用于加载图像、保存图像、调整图像大小、绘制图像等。
lb1->setFixedSize(100, 100);//调整文件大小,将图片放在项目生成的影子目录下
lb1->setScaledContents(true);//图片自动缩放
lb1->setPixmap( pix );
lcd = new QLCDNumber;
pgb = new QProgressBar;
QVBoxLayout *vbox1 = new QVBoxLayout;
vbox1->addWidget(lb);
vbox1->addWidget(lb1);
vbox1->addWidget(lcd);
vbox1->addWidget(pgb);
QHBoxLayout *hbox = new QHBoxLayout;//水平布局
hbox->addLayout(vbox);//将两个处置布局对象进行水平布局
hbox->addLayout(vbox1);
this->setLayout(hbox);
//d1发一个信号,lcd通过槽函数进行动作
connect(dl, SIGNAL(valueChanged(int)), lcd, SLOT(display(int)));
connect(dl, SIGNAL(valueChanged(int)), pgb, SLOT(setValue(int)));
connect(dl, SIGNAL(valueChanged(int)), sd, SLOT(setValue(int)));
connect(dl, SIGNAL(valueChanged(int)), sb, SLOT(setValue(int)));
}
Widget::~Widget()
{
}
按钮
#ifndef WIDGET_H
#define WIDGET_H
#include <QLineEdit>
#include <QPushButton>
#include <QCheckBox>
#include <QWidget>
class Widget : public QWidget
{
Q_OBJECT
public slots:
void setpass(bool flag)//定义一个槽函数,传参进行判断
{
if(!flag)
le->setEchoMode(QLineEdit::Password);
else
le->setEchoMode(QLineEdit::Normal);
}
public:
Widget(QWidget *parent = 0);
~Widget();
private:
QLineEdit *le;
QCheckBox *ck;
QPushButton *pb;
};
#endif // WIDGET_H
#include "widget.h"
#include <QVBoxLayout>
Widget::Widget(QWidget *parent)
: QWidget(parent)
{
le = new QLineEdit;
// le->setEchoMode(QLineEdit::Password);
ck = new QCheckBox("show passwd");
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)));
}
Widget::~Widget()
{
}
容器
Group Box
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QGroupBox>//QGroupBox控件是Qt中的一个容器控件,用于将一组相关的控件组织在一起,并提供一个可选的标题。它可以用于创建一个包含多个相关选项的面板,用户可以选择其中一个选项。
#include <QRadioButton>//QRadioButton控件是Qt中的一个单选按钮控件,用于在一组选项中选择一个选项。它常用于创建选项组,并且只能选择其中一个选项。
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = 0);
~Widget();
private:
QGroupBox *gb;
QRadioButton *r1, *r2, *r3;
};
#endif // WIDGET_H
#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()
{
}
scroarea box
#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
#include "widget.h"
#include <QVBoxLayout>
Widget::Widget(QWidget *parent)
: QWidget(parent)
{
lb = new QLabel(this);
QPixmap pix("1.png");
lb->setPixmap(pix);
sa = new QScrollArea(this);
sa->setWidget(lb);
QVBoxLayout *mainbox = new QVBoxLayout;
mainbox->addWidget(sa);
this->setLayout(mainbox);
}
Widget::~Widget()
{
}
toolbox
#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
#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()
{
}
stackedw
#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
#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()
{
}
qtabwidget
#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
#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()
{
}