widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QPushButton> //普通按钮
#include <QGridLayout> //网格布局管理器
#include <QLabel> //标签
#include <QLineEdit> //行编辑器
#include <QHBoxLayout> //水平布局管理器
#include <QVBoxLayout> //垂直布局管理器
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = 0);
~Widget();
public slots: //槽函数
void pb_array_handler();
private:
QPushButton *pb[10]; //10个按钮
QLabel *lb; //标签
QLineEdit *le; //行编辑器
};
#endif // WIDGET_H
widget.cpp
#include "widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
{
setFixedSize(430,320);
QGridLayout *grd = new QGridLayout(); //创建网格布局管理器
for(int i = 0;i < 10;i++) //设置10个按钮
{
pb[i] = new QPushButton(this); //创建按钮
pb[i]->setText(QString::number(i)); //按钮名字
grd->addWidget(pb[i],i/5,i%5,1,1); //第一个参数为设置的对象指针,所在起始行数,所在起始列数,所占行数,所占列数
connect(pb[i],&QPushButton::clicked,this,&Widget::pb_array_handler); //关联槽函数
}
lb = new QLabel("用户点击了什么按钮?",this); //创建标签
le = new QLineEdit(this); //创建行编辑器
le->setReadOnly(true); //设置只读
QHBoxLayout *hbox = new QHBoxLayout(); //创建水平布局管理器
hbox->addWidget(lb);
hbox->addWidget(le);
QVBoxLayout *vbox = new QVBoxLayout(); //创建垂直布局管理器
vbox->addLayout(grd);
vbox->addLayout(hbox);
setLayout(vbox); //设置总布局
}
void Widget::pb_array_handler() //槽函数
{
QPushButton *button = static_cast<QPushButton *>(sender()); //append需要转换类型
QString tmp = le->text();
tmp.append(button->text()); //相加
le->setText(tmp);
}
Widget::~Widget()
{
}
结果