идея такова:
к трем кнопкам по сигналу клика прикручивается слот принимающий параметр типа qstring таким образом
QPushButton *btnSelAll = new QPushButton("&All");
connect(btnSelAll,SIGNAL(clicked()),this,SLOT(sqlRemonti(const QString&)));
и собстна сам слот:
bool sql_test::sqlRemonti(const QString& list)
{
bool res;
if (db.isOpen())
{
switch( list )
{
case 1:
model->setQuery("SELECT * FROM remonti where rem_pab is not NULL AND klie_san IS NULL");
case 2:
model->setQuery("SELECT * FROM remonti where rem_pab is NULL");
default:
model->setQuery("SELECT * FROM remonti");
}
qDebug() << list;
dbView->setModel(model);
dbView->setSelectionBehavior(QAbstractItemView::SelectRows);
dbView->resizeColumnsToContents();
dbView->show();
res = true;
} else {
sysico->showMessage("Error!", "Not connected to MySQL server!", QSystemTrayIcon::Critical);
res = false;
}
return res;
}
и его обьявление в заголовочном файле:
public slots:
bool sqlRemonti(const QString& list);
Вся идея такова:
- имеется 3 кнопки и 1 слот.
- в зависимости от того, какая кнопка нажата, через переданный параметр слота определяется какой запрос выполнить.
т.е. таким образом хочу вместо трех слотов с разными запросами сделать 1 слот с параметром.
какова проблема:
- switch отказывается принимать QString переменную, жалуясь шо она не интеджер....
- если закоментить свитч и откомпилить прогу, при старте в логе проскакивют строки, что :
QObject::connect: Incompatible sender/receiver arguments
QPushButton::clicked() --> sql_test::sqlRemonti(QString)
QObject::connect: Incompatible sender/receiver arguments
QPushButton::clicked() --> sql_test::sqlRemonti(QString)
QObject::connect: Incompatible sender/receiver arguments
QPushButton::clicked() --> sql_test::sqlRemonti(QString)
Поскольку пока тока пытаюсь освоить кьют, такие проблемы и возникают... все наверно весьма элементарно
ОС - ArchLinux, Qt v. 4.5.2-1