код в студию!!! желательно работающий кусок
child_w::child_w(int rights, QWidget * parent, Qt::WFlags flags):childBase_w(rights,parent,flags),Ui::ChildWindow()
{
connect(tblMain, SIGNAL(itemChanged(QTableWidgetItem *)), this, SLOT(onItemChanged( QTableWidgetItem * )));
}
void child_w::onItemChanged( QTableWidgetItem * item )
{
int col = tblMain->column(item);
switch (col)
{
case 0://код товара
if(!txt.isNull()&!txt.isEmpty())
{
db = QSqlDatabase::database("maindb");
query = QSqlQuery::QSqlQuery(db);
script = SelectGoodsByIdScript;
script.replace(":id", txt);
if (query.exec(script))
{
sz = query.size();
if (sz > 0)
{
if (sz==1)
{//один товар
query.first();
disconnect(tblMain, SIGNAL(itemChanged(QTableWidgetItem *)), this, SLOT(onItemChanged( QTableWidgetItem * )));
item->setText(QString::fromUtf8(query.value(0).toByteArray()));
tblMain->item(row,col+1)->setText(QString::fromUtf8(query.value(1).toByteArray()));
tblMain->item(row,col+2)->setText(QString::fromUtf8(query.value(2).toByteArray()));
tblMain->item(row,col+3)->setText(QString::number(query.value(3).toDouble()));
connect(tblMain, SIGNAL(itemChanged(QTableWidgetItem *) ), this, SLOT(onItemChanged( QTableWidgetItem * )), Qt::QueuedConnection);
}
else
{//несколько товаров
}
}else
{//пустая выборка - товар не найден
QMessageBox::information(this, "WHL cashier","");
}
}
query.clear();
}
break;
default:
break;
}
это просто выдранный кусок - без QMessageBox все работает, с ним - нет ...
добавлено спустя 4 минуты: Попробуй законнектить слот с флагом Qt::QueuedConnection
все заработало! я ступил - не тот connect отредактировал ...
Спасибо!