587,66 → 587,6 |
|
|
|
// ïîëó÷àåì èìÿ òàáëèöû - õðàíèëèùà îáúåêòîâ êëàññà |
QString FilterValueDelegate::getClassInctanc(QString class_id){ |
|
|
|
|
QSqlQuery q; |
QString sql_str; |
QString result; |
QString classInctance; |
int field_inctance; |
bool ok; |
sql_str = tr("select * " |
" from ListOfClasses where ListOfClasses.ID = '" //îïðåäåëèì êëàññû, äëÿ êîòîðûõ êîðíåâîé ÿâëÿåòñÿ êîíòåéíåðîì |
); |
sql_str.append(class_id); |
sql_str.append(tr("'")); |
q.prepare(sql_str); |
|
ok = q.exec(); |
|
if (!ok) return result; |
|
/* |
if (!ok) { |
QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå. |
this, // Ðîäèòåëüñêèé âèäæåò. |
QObject::tr("Database Error"), // Çàãîëîâîê. |
q.lastError().text()); // Òåêñò ñîîáùåíèÿ. |
return result; |
} |
|
*/ |
|
|
|
|
field_inctance = q.record().indexOf(tr("TableWhithInstance")); |
while(q.next()){ |
|
classInctance = q.value(field_inctance).toString(); |
result.append(classInctance); |
} |
|
return result; |
|
|
|
|
|
} |
|
|
|
QString grtFieldType(QString class_id, QString fieldName)//îïðåäåëÿåì òèï äàííûõ ïîëÿ |
{ |
|
} |
|
|
//! [1] |
QWidget *FilterValueDelegate::createEditor(QWidget *parent, |
const QStyleOptionViewItem &/* option */, |
674,20 → 614,11 |
// editor->addItem("0"); |
|
// // // editor->addItems(Name_list); |
editor->setEditable(true); |
// editor->setEditable(false); |
return editor; |
} |
//! [1] |
|
|
|
|
|
|
|
|
|
|
//! [2] |
void FilterValueDelegate::setEditorData(QWidget *editor, |
const QModelIndex &index) const |
704,45 → 635,7 |
QString value = index.model()->data(index, Qt::EditRole).toString(); |
QString class_id = index.model()->data(model->index(index.row(),2), Qt::EditRole).toString(); |
QComboBox *comboBox = static_cast<QComboBox*>(editor); |
QString inctance; //õðàíèëèùå îáúåêòîâ êëàññà |
QString fieldName;//èìÿ ïîëÿ |
QSqlQuery q; |
QString sql_str; |
QStringList itemsList; |
bool ok; |
|
|
|
fieldName = index.model()->data(model->index(index.row(),4), Qt::EditRole).toString(); |
|
|
inctance = FilterValueDelegate::getClassInctanc(class_id); |
if (!inctance.isEmpty() && !fieldName.isEmpty()){ |
sql_str = tr("select `"); |
sql_str.append(fieldName); |
sql_str.append(tr("` from `")); |
sql_str.append(inctance); |
sql_str.append(tr("`")); |
ok = q.prepare(sql_str); |
ok = q.exec(); |
|
while(q.next()){ |
QString tmp_str; |
tmp_str = q.record().value(fieldName).asString(); |
itemsList.append(tmp_str); |
FilterValueDelegate::items.append(tmp_str); |
} |
if(!itemsList.isEmpty()) { |
comboBox->addItems(itemsList); |
items = itemsList; // ãëîáàëüãàÿ ïåðåìåííàÿ |
} |
|
} |
|
|
|
|
|
//QStringList ID_list; |
//QStringList Name_list; |
int curr_index; |
750,7 → 643,7 |
//ID_list = items.keys(); |
//Name_list = items.values(); |
|
curr_index = itemsList.indexOf(value); |
curr_index = items.indexOf(value); |
if (curr_index==-1) return; |
comboBox->setCurrentIndex(curr_index); |
/**************************************************** |
765,7 → 658,7 |
if (value == "8") comboBox->setCurrentIndex(8); |
if (value == "9") comboBox->setCurrentIndex(9); |
******************************************************/ |
comboBox->setEditable(true); |
comboBox->setEditable(false); |
|
|
//comboBox->setItemText(0, value); |
782,7 → 675,6 |
// int value = spinBox->value(); |
|
// model->setData(index, value, Qt::EditRole); |
|
QStringList ID_list; |
QStringList Name_list; |
|
798,17 → 690,7 |
// QString value = ID_list.at(currIndex); |
QString value = items.at(currIndex); |
model->setData(index, value, Qt::EditRole); |
|
|
} |
|
|
|
|
|
|
|
|
//! [3] |
|
//! [4] |