5

QTableWidget でいくつかの値を選択するためのポップアップ メニューを表示しています。一番下の項目は「リストの変更」エントリです。それを選択すると、新しいウィンドウが自動的に表示され、QComboBox が消え、セルが Qt::DisplayRole 状態に戻ります。

QTableWidget.edit()現在、Qt にはとのような素敵な API 呼び出しがすべてあります。QTableWidget.editItem()私が本当に探しているのは でありQTableWidget.endEditing()、できればセルのインデックスを指定せずに、この呼び出しを使用して取得できます。

table.currentIndex()

…しかし、現在のセルが常に編集中のセルであることを保証できるかどうかはわかりません。

この種のエディタを閉じる API はありますか?

ポップアップメニュー

4

5 に答える 5

7

QTableWidgetは、QWidgetから19個のパブリックスロットを継承します。それらの1つはsetDisabled()であり、そのウィジェットとそのすべての子の入力イベントを無効にする必要があります。

私は試してみます:

table.setDisabled( true );
table.setDisabled( false );

うまくいかないとおっしゃっていましたが、別の方法があります。それが気に入らない場合(テーブルのフォーカスが失われると思います)、EditTriggersを使用してみてください。例えば:

table.setEditTriggers( QAbstractItemView::NoEditTriggers );
于 2009-02-05T23:29:51.587 に答える
1

QTableWidget.closePersistentEditor() を使用してエディターを閉じることができる場合があります。ただし、特に QModelIndex ベースの API に慣れているようで、カスタム エディター ウィジェットを既に使用しているため、 QAbstractItemView.closeEditor() の方が希望に近い場合があります。

于 2009-02-23T01:05:50.933 に答える
0

リストウィジェットについて話すことはできません。しかし、私は似たようなことをしようとしてここに来ました。

セルをダブルクリックし、列に基づいてリストを含むサブフォームを表示し、それを閉じると、選択した値に基づいて次の適切な列に移動しました。

私の問題は、セルの値を取得して次の適切なセルを「選択」できることでしたが、元のセルは編集モードで選択されたままです!

私のダブルクリックがセルを選択していることについに気づきました。編集。

シングルクリックでセルが選択されますが、編集モードは開きません。

補足: そのサブフォームを真にモーダルに動作させることはできなかったので、呼び出し元のフォームにループを作成しました: サブフォームが表示されている間、唯一のコードは app.processEvents() です

于 2015-11-25T20:13:16.433 に答える