2

QTreeWidgetItemを使用して Qt/C++ アプリを開発しています。新しいアイテムが作成されたらsetEditable、それを設定し、UI に新しい名前を直接入力できるようにします。

私は現在itemChanged、変更をキャッチして保存するために以下のように使用しています。デフォルトでは、新しいアイテム名を新しいフォルダーに設定し、後で手動で変更できます。私の問題は、アイテムを作成しているときに編集可能になり、何も変更せずに押すEnterと生成されないことです。EscitemChanged

Enter/Escイベントをキャッチできる SIGNAL/SLOT に基づいて使用できるコマンドはありますか。目標は、同じ信号をトリガーすることです

connect(this, SIGNAL(itemChanged(QTreeWidgetItem*, int)),
        this, SLOT(onTreeItemChanged(QTreeWidgetItem*)));

Enterに/Escシグナルを接続したいonTreeItemChangedのですが、itemChanged.

を使ってみましたが、を押しitemActivatedても発動しません。Enter

connect(this, SIGNAL(itemActivated(QTreeWidgetItem*, int)),
        this, SLOT(onTreeItemChanged(QTreeWidgetItem*)));

何か案が、

セブ

4

1 に答える 1

0

これを回答に書いて申し訳ありませんが、まだコメントできません:

QCombobox から派生したクラスに関して、いくつかの (おそらく) 同様の問題がありました。このクラスには、ポップアップを表示するときと表示しないときの特別な動作がありました。

Return が押されるたびに QEventKeyEvent が送信されましたが、要素がこのキーを受け入れるためのショートカットとして解釈したため、解決策はQEvent ::Shortcutをキャッチすることでした。

--編集-そのような場合、私はしばしばイベントフィルターをインストールし、イベントを出力に書き込み、switchステートメントを使用して興味のない要素を除外し、原因を突き止めます。

于 2015-03-07T09:17:14.823 に答える