2016-03-28 12 views
0

仮想キーボードウィジェットを持つタッチスクリーンキオスクシステムで作業しています。すべてのダイアログで、仮想キーボードは非タッチ入力の唯一の方法です。 QFreeSystemModelを使用してファイル名を表示するためのQTreeViewに取り組んでいます。新しい名前(名前以外の他の列はすべて非表示)という列を追加しました。 QTreeViewに割り当てたデリゲートのcreateEditor()とdestroyEditor()をオーバーライドし、モデルのdata()とsetData()をオーバーライドしました。 createEditor()オーバーライドはローカルQLineEditオブジェクトへのポインタを返します。これにより、編集の結果をコントロールすることができます(その新しい列のモデルのデータオブジェクトにプラグインする)。Qt5仮想キーボードで編集可能なQTreeView

私の物理キーボードでは、指定された行のNew Nameセルに変更を加えることができますが、フォーカスを失うことなく仮想キーボードの入力方法を理解することはできません。編集。どのようにこれを行うことができますか?私はQtコードを掘り下げましたが、これまでの運はありません。

答えて

0

仮想キーボードにはフォーカス可能なウィジェットが含まれていてはなりません。フォーカスに中立でなければなりません。それは、その後、フォーカスを盗むことはありません。 This answerには、フォーカスを奪うことのない実例があり、フォーカスされたウィジェットにポストされるキー押しイベントを合成します。

+0

入力いただきありがとうございます。別の方向にドラッグされましたが、仮想キーボードウィジェットのコンストラクタとボタンウィジェットのコンストラクタには、次の2行があります。 setWindowFlags(Qt :: X11BypassWindowManagerHint); setFocusPolicy(Qt :: NoFocus); 完全に動作します。再度、感謝します。 – bmahf

+0

Btwは、これをキーボードとキーボタンの両方のコンストラクタに入れなければならないか、動作していないようです。また、どちらも単独で働いていない場所では、これらの両方が必要でした。 – bmahf

+0

Btw、私は今見ているもう一つの問題があります。アイテムをクリックすると、いくつかのスターターテキストが挿入されます。アイテムから離れてクリックすると、空白にならないようにしたいが、テキストを表示し続けたいエディタが適用される前にセルに入っていました。 createEditor()では、QLineEditオブジェクトを最初に設定したいテキストで設定し、それを返します。しかし、テキストは表示されません。 Qtの呼び出し元に戻ったときに空白になっているようです。 – bmahf

関連する問題