标签对象初始显示0,每次单击标签对象后,其显示内容就加1,依次变为1、2、3等。
#ifndef DIALOG_H
#define DIALOG_H#include <QDialog>
#include <QPushButton> //包含命令按钮类
#include "MyLabel.h"class Dialog : public QDialog
{Q_OBJECTpublic:Dialog(QWidget *parent = 0);~Dialog();private:MyLabel* label; //定义标签QPushButton* btn; //定义命令按钮
};#endif // DIALOG_H
#ifndef MYLABEL_H
#define MYLABEL_H#include <QLabel>
#include <QString>class MyLabel:public QLabel
{Q_OBJECT //使用信号槽机制的类必须在头文件中嵌入宏Q_OBJECT,且该类必须为QObject派生类public://构造函数MyLabel(const QString &text, QWidget *parent=0):QLabel(text,parent){}//析构函数~MyLabel(){}
public slots:void AddNum(){QString str = this->text();QString str_num = str.mid(12);int num = str_num.toInt();++num;QString str_new = str.left(12) + QString::number(num);this->setText(str_new);this->adjustSize();//自适应调整标签的大小}};#endif // MYLABEL_H
#include "dialog.h"Dialog::Dialog(QWidget *parent): QDialog(parent)
{resize(300,300);label = new MyLabel("click nest: 0",this);//动态创建标签对象,设置文本btn = new QPushButton("请点击我",this); //动态创建标签对象,设置文本label->move(125,150);//移动到指定位置btn->move(125,110);//连接信号函数和槽函数//当单击clicked()命令按钮时发送信号//开始执行槽函数connect(btn,SIGNAL(clicked()),label,SLOT(AddNum()));//连接信号和槽,信号函数与槽函数的参数列表必须完全相同
}Dialog::~Dialog()
{
}
#include "dialog.h"
#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);Dialog w;w.show();return a.exec();
}