Мне нужно реализовать таблицу в Qt, которая показывает поле со списком для каждой строки в определенном столбце.
Пока что на основе этого примера: http://doc.qt.nokia.com/4.7-snapshot/itemviews-spinboxdelegate.html и по этому вопросу: QStandardItem + QComboBox Мне удалось создать QItemDelegate.
Моя проблема в том, что все работает нормально, если я реализую это из моей функции main () в main.cpp, но это не работает, если я вставляю таблицу в Qt Designer, чтобы затем использовать ее в функцииКласс MainWindow в mainwindow.cpp.
Не могли бы вы дать мне подсказку?Заранее спасибо!
Делегирование на main.cpp (работает хорошо, когда я дважды щелкаю по второму столбцу, появляется поле со списком):
QStandardItemModel model(4, 2);
QTableView tableView;
tableView.setModel(&model);
ComboBoxDelegate delegate;
tableView.setItemDelegateForColumn(1,&delegate);
tableView.horizontalHeader()->setStretchLastSection(true);
for (int row = 0 ; row < 4; ++row) {
for (int col = 0; col < 2; ++col) {
QModelIndex index = model.index(row, col, QModelIndex());
model.setData(index, QVariant((row+1) * (col+1)));
}
}
tableView.show();
Делегирование на mainwindow.cpp, альтернатива 1 (показывает пустую таблицу)
QStandardItemModel model(4,2);
ui->tablePoint->setModel(&model);
ComboBoxDelegate delegate;
ui->tablePoint->setItemDelegateForColumn(1,&delegate);
ui->tablePoint->horizontalHeader()->setStretchLastSection(true);
for (int row = 0 ; row < 4; ++row) {
for (int col = 0; col < 2; ++col) {
QModelIndex index = model.index(row, col, QModelIndex());
model.setData(index, QVariant((row+1) * (col+1)));
}
}
Делегирование на mainwindow.cpp, альтернатива 2 (показывает таблицу, но когда я дважды щелкаю наво втором столбце не отображается поле со списком. Вместо него отображается обычное поле прокрутки):
QStandardItemModel* model = new QStandardItemModel(4,2);
ui->tablePoint->setModel(model);
ComboBoxDelegate delegate;
ui->tablePoint->setItemDelegateForColumn(1,&delegate);
ui->tablePoint->horizontalHeader()->setStretchLastSection(true);
for (int row = 0 ; row < 4; ++row) {
for (int col = 0; col < 2; ++col) {
QModelIndex index = model->index(row, col, QModelIndex());
model->setData(index, QVariant((row+1) * (col+1)));
}
}