0

QTableWidget のアイテムをユーザーが編集できるようにしたい。次のコードは、別のプロジェクト内でコンパイルすると完全に機能します。

QTableWidget *tablewidget = new QTableWidget;

// Add data
tablewidget->insertRow(0);
tablewidget->insertColumn(0);
tablewidget->insertColumn(1);

QTableWidgetItem *item;
item = new QTableWidgetItem("editable");
tablewidget->setItem(0,0,item);

セルをダブルクリックすると、キーを受け取る準備が整います。

しかし、このコードを既存のプロジェクトの一部にすると (まさにこのコードで、違いはなく、既存のコードとの接続もありません)、セルをダブルクリックしても何も起こりません- セルは編集できません!

このプロジェクトは非常に大きく、完全なコード レビューには膨大な時間がかかります。

私の最初の仮定 - おそらく Qt は、QTableWidget/QTableWidgetItem のすべてのインスタンスに対してグローバルに編集不可の状態を設定できるのでしょうか? または、代理人をグローバルに登録しますか?

根本原因は何だと思いますか?

4

1 に答える 1

0

QTableWidgetデフォルトで編集可能でDoubleClick、編集トリガーとして持っています。

ただし、既存のプロジェクトによってこれらのプロパティが変更されている可能性があります。それらをデフォルトに変更できます。まず、テーブル全体の編集トリガーを設定してみてください。

tableWidget->setEditTriggers(QAbstractItemView::DoubleClicked);

問題が解決しない場合は、各アイテムの編集可能なプロパティを変更してみてください。

item->setFlags(item.Flags() | Qt::ItemIsEditable);
于 2014-02-19T11:52:00.487 に答える