在SLOT的函數中藉由Sender()轉型取得Button的Text來判斷
是哪一個Button被按下
#include
#include "dialog.h"
#include "ui_dialog.h"
static QString DialButtonText[]={"1","2","3","4","5","6","7","8","9","*","0","#"};
#define ARRAYSIZE(x) sizeof(x)/sizeof(x[0])
Dialog::Dialog(QWidget *parent) : QDialog(parent), ui(new Ui::Dialog)
{
ui->setupUi(this);
QGridLayout *layout = new QGridLayout;
layout->setColumnStretch(1, 1);
layout->setColumnMinimumWidth(1, 80);
m_Label=new QLabel("Hello");
layout->addWidget(m_Label,0,0,1,1);
int Index=0;
for(int IndexRow=0;IndexRow<4;IndexRow++)
{
for(int IndexCol=0;IndexCol<3;IndexCol++,Index++)
{
QPushButton *Button=new QPushButton(DialButtonText[Index]);
layout->addWidget(Button, IndexRow+3, IndexCol,1,1);
connect(Button,SIGNAL(clicked()),this,SLOT(DoDigitClick()));
}
}
setLayout(layout);
}
Dialog::~Dialog()
{
delete ui;
delete m_Label;
}
void Dialog::changeEvent(QEvent *e)
{
QDialog::changeEvent(e);
switch (e->type())
{
case QEvent::LanguageChange:
ui->retranslateUi(this);
break;
default:
break;
}
}
void Dialog::DoDigitClick()
{
QPushButton *button = qobject_cast
for(int nIndex=0;nIndex
if(button->text().compare(DialButtonText[nIndex])) continue;
m_Label->setText(m_Label->text()+DialButtonText[nIndex]);
switch(nIndex)
{
case 0://1 break;
case 1://2 break;
case 2://3 break;
case 3://4 break;
case 4://5 break;
case 5://6 break;
case 6://7 break;
case 7://8 break;
case 8://9 break;
case 9://* break;
case 10://0 break;
case 11://# break;
}
}
}