void Dialog::setupDelegateAndGrid()
{
if (m_fields.count() == 0)
return;
itemsList << "Default comboBox Text";
for (int i = 0; i < m_fields.count(); i++)
{
itemsList << m_fields.value(i).fieldName;
}
m_delegate = new ComboBoxDelegate();
connect(m_delegate,
SIGNAL(textChanged
(QString)),
this,
SLOT(comboTextChanged
(QString)));
m_delegate->setItems(itemsList);
m_model->setHeaderData(0, Qt::Horizontal, tr("Column1"));
m_model->setHeaderData(1, Qt::Horizontal, tr("Column2"));
m_model->setHeaderData(2, Qt::Horizontal, tr("Column3"));
tableView->setModel(m_model);
tableView->setItemDelegateForColumn(2, m_delegate);
for (int i = 0; i < m_model->rowCount(); i++)
{
tableView->openPersistentEditor(m_model->index(i, 1));
tableView->openPersistentEditor(m_model->index(i, 2));
m_model->setData(m_model->index(i, 2, "Default comboBox Text" Qt::DisplayRole);
item->setEditable(false);
m_model->setItem(i, 0, item);
}
}
void Dialog
::comboTextChanged(QString text
) {
for (int i = 0; i < m_fields.count(); i++)
{
if (m_fields.value(i).fieldName == text)
{
m_model->setData(m_model->index(tableView->currentIndex().row(), 2), m_fields.value(i).defaultValue.toString(), Qt::DisplayRole);
break;
}
}
}
void Dialog::setupDelegateAndGrid()
{
if (m_fields.count() == 0)
return;
QStringList itemsList;
itemsList << "Default comboBox Text";
for (int i = 0; i < m_fields.count(); i++)
{
itemsList << m_fields.value(i).fieldName;
}
m_delegate = new ComboBoxDelegate();
connect(m_delegate, SIGNAL(textChanged(QString)), this, SLOT(comboTextChanged(QString)));
m_delegate->setItems(itemsList);
m_model = new QStandardItemModel(m_fields.count(), 3);
m_model->setHeaderData(0, Qt::Horizontal, tr("Column1"));
m_model->setHeaderData(1, Qt::Horizontal, tr("Column2"));
m_model->setHeaderData(2, Qt::Horizontal, tr("Column3"));
tableView->setModel(m_model);
tableView->setItemDelegateForColumn(2, m_delegate);
tableView->setEditTriggers(QAbstractItemView::AllEditTriggers);
for (int i = 0; i < m_model->rowCount(); i++)
{
tableView->openPersistentEditor(m_model->index(i, 1));
tableView->openPersistentEditor(m_model->index(i, 2));
m_model->setData(m_model->index(i, 2, "Default comboBox Text" Qt::DisplayRole);
QStandardItem *item = new QStandardItem();
item->setEditable(false);
m_model->setItem(i, 0, item);
}
}
void Dialog::comboTextChanged(QString text)
{
for (int i = 0; i < m_fields.count(); i++)
{
if (m_fields.value(i).fieldName == text)
{
m_model->setData(m_model->index(tableView->currentIndex().row(), 2), m_fields.value(i).defaultValue.toString(), Qt::DisplayRole);
break;
}
}
}
To copy to clipboard, switch view to plain text mode
Bookmarks