標簽對象初始顯示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();
}
?