Допустим, в объекте values типа QMap<QString, QString> хранятся некоторые пары значений, которыми необходимо заполнить выпадающие списки QComboBox в таблице типа QTableWidget. Таким образом, для каждой строки будет существовать поле, допустимые значения для которого будут браться из заранее определенного и сформированного списка. Самый простой способ установки некоторого объекта в качестве ячейки таблицы — воспользоваться функцией setCellWidget.
ui->tableWidget->setRowCount(ui->tableWidget->rowCount()+1);
QComboBox *box = new QComboBox;
//добавим значения ключей как элементы списка,
//а сами ключи - как userData
foreach(QString index, values.keys())
box->addItem(values.value(index), index);
//по горизонтали растянем, по вертикали - как решит программа :)
box->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred);
//вставляем в таблицу QTableWidget в колонку №5
ui->tableWidget->setCellWidget(ui->tableWidget->rowCount() - 1, 5, box);
Теперь выведем все ключи и их значения списков таблицы в дебаг:
int valuesColNum = 5;
for(int i = 0; i < ui->tableWidget->rowCount(); ++i) {
QComboBox *box;
box = qobject_cast<QComboBox*>(
ui->tableWidget->cellWidget(i,valuesColNum));
qDebug() << i << "строка:";
qDebug() << "значение ключа:" << box->currentText() << "ключ:" << box->currentData().toString();
}
А вот в записи Добавление данных в таблицу QTableWidget. Очистка таблицы можно еще почитать про работу с данными и таблицей QTableWidget 🙂
Понравилось это:
Нравится Загрузка...
Похожие записи