大家好,我是QT新手。
connect(okButton, SIGNAL(clicked()), this, SLOT(okBtnClicked());
我需要传一个参数过去,但是clicked() 与okBtnClicked()两个需要一样
那我应该如何传这个参数过去呢?
下面是我的cpp代码
#include <QString>
#include <QtGui>
#include <QMessageBox>
#include <QtDebug>
#include "doServe.h"
CDoServe::CDoServe(QWidget *parent)
: QDialog(parent)
{
db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("localhost");
db.setDatabaseName("test");
db.setUserName("root");
db.setPassword("123");
db.open();
}
void CDoServe::doAction(int id_type)
{
QSqlQuery query;
QString control_id = getControlId();
QString box_id = getBoxId();
switch(id_type){
case 3:
showDialog();
break;
default:
query.exec(QString("INSERT INTO `Bells` (id_type, service_count, box_id, control_id, start_time) VALUES('%1', 1, '%2', '%3', now());").arg(id_type).arg(box_id).arg(control_id));
break;
}
}
void
CDoServe::showDialog()
{
dialog = new QDialog;
QLabel *shareQuestion = new QLabel(tr("请输入您的份额:"));
QLabel *shareUnit = new QLabel(tr("份"));
shareEdit = new QLineEdit;
okButton = new QPushButton(tr("确定"));
cancelButton = new QPushButton(tr("取消"));
iceLayout = new QGridLayout;
iceLayout->addWidget(shareQuestion, 0, 0, 1, 2);
iceLayout->addWidget(shareEdit, 0, 2, 1, 1);
iceLayout->addWidget(shareUnit, 0, 3, 1, 2);
iceLayout->addWidget(okButton, 1, 1, 1, 1);
iceLayout->addWidget(cancelButton, 1, 3, 1, 1);
dialog->setLayout(iceLayout);
dialog->setWindowTitle(tr("加冰块"));
dialog->resize(250, 200);
dialog->show();
connect(okButton, SIGNAL(clicked()), this, SLOT(okBtnClicked()));
connect(cancelButton, SIGNAL(clicked()), dialog, SLOT(close()));
}
void
CDoServe::okBtnClicked()
{
QSqlQuery query;
QString box_id = getBoxId();
QString control_id = getControlId();
int count = shareEdit->text().trimmed().toInt();
if(count < 1 || count > 10)
{
shareEdit->clear();
}
else
{
query.exec(QString("INSERT INTO `Bells` (id_type, serveice_count, box_id, control_id, start_time) VALUES('%1', '%2', '%3', '%4',now());").arg(id_type).arg(count).arg(box_id).arg(control_id));
dialog->close();
// cancelButton->setEnabled(shareEdit->text().isEmpty());
}
}
void
CDoServe::warning()
{
}
QString
CDoServe::getControlId()
{
QString box_id = getBoxId();
QSqlQuery query;
query.exec("SELECT `control_id` FROM `Place` WHERE `id` = '"+box_id+"' LIMIT 1");
query.next();
return query.value(0).toString();
}
QString
CDoServe::getBoxId()
{
return "R0201";
}
[ 此贴被甲骨文在2008-12-20 16:44重新编辑 ]