특정 열의 각 행에 콤보 상자를 표시하는 테이블을 Qt에 구현해야합니다. http://doc.qt.nokia.com/4.7-snapshot/itemviews-spinboxdelegate.html 을하고이 질문에 :Qt : QStandardItemModel을 사용하는 QTableView에서 사용자 정의 편집기 (콤보 상자)를 만들 QItemDelegate 만들기
는 지금까지이 예에 따라 QStandardItem + QComboBox 나는 성공적으로 QItemDelegate을 만들 수 있었다.
main.cpp의 main() 함수에서 구현하면 모든 문제가 해결되지만, Qt 디자이너에 테이블을 삽입하여 MainWindow 클래스의 함수 내에서 사용하면 잘 작동하지 않습니다. in mainwindow.cpp.
실마리를 줄 수 있습니까? 미리 감사드립니다! MAIN.CPP에
위임 (필자는 두 번째 열에서 클릭을 두 배로 때, 잘 작동이 표시 콤보 상자) : mainwindow.cpp 대안 1
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 대안 2
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)));
}
}
위임 (이 테이블을 보여줍니다하지만 난 두 번 때 t 표시되지 않습니다 두 번째 열을 클릭 그는 콤보 상자. 대신 정규 스핀 상자)을 보여줍니다 모두 mainwindow.cpp의 경우에, 당신이 보여 코드 생성자에서, 당신이 할 것을 가정
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)));
}
}
당신에게 Koying 감사한다! 당신은 내가 무엇이 문제인지 깨닫고 프로그램을 수정했습니다. 그러나 나는 명성이 100 명 이하이기 때문에 8 시간 전에 내 질문에 대답 할 수 없었다. 내가 실수를 한 것은 처음이 아니며 마지막이 아닐 것이라고 생각합니다. 당신은 맞습니다. 저는 비 객체 지향 프로그래밍 세계에서 왔습니다. 그리고 이런 종류의 것들은 저에게 ***의 고통입니다. 나와 함께 지식을 공유해 주셔서 감사합니다. 인사말. Francisco – Fracu