特定の列の各行にコンボボックスを表示するテーブルをQtに実装する必要があります。 http://doc.qt.nokia.com/4.7-snapshot/itemviews-spinboxdelegate.html と、この質問に:Qt:QStandardItemModelでQTableViewにカスタムエディタ(コンボボックス)を作成するQItemDelegateを作成します。
は、これまでのところ、この例に基づいて QStandardItem + QComboBox 私は正常にQItemDelegateを作成するために管理しました。
私の問題はmain.cppのmain()関数から実装するとすべて正常に動作しますが、Maintextクラスの関数内で使用するためにQt Designerにテーブルを挿入するとうまく動作しませんin 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の(それは示してい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)));
}
}
代表団(それがテーブルを示すが、私は2番目の列をダブルクリックしたときに、それはトンが表示されません彼はコンボボックス。その代わりに、通常のスピンボックス)を示しています。両方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時間前に私自身の質問に答えることができませんでした。 私がこの間違いを犯すのは初めてではなく、それは最後ではないと信じています。あなたは正しいです、私は非オブジェクト指向のプログラミング世界から来て、これらの種類のものは私のための***の痛みです。私とあなたの知識を共有してくれてありがとう。ご挨拶フランシスコ – Fracu