問題タブ [qtreeview]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
qt - QGLWidget のコンテキスト メニューに関する問題
QGLWidget と QTreeView のカスタム コンテキスト メニューに問題があります。QTreeview と QGLWidget をスプリッタ付きの共通ウィジェットに追加しました。以下のコードでコンテキストメニューを開きます。
actions は QActions のリストです。
QGLWidget でマウスを押すと、特定の条件が満たされるとマウス カーソルが変化します。右クリックでコンテキスト メニューを開いた後、メニュー項目の 1 つでマウスを押すと、すべて問題ありません。コンテキスト メニューのいずれかの項目でマウスを押さないと、コンテキスト メニューが閉じて問題が発生します。問題は、マウス プレスが発生したときにすべての条件が満たされていても、マウス カーソルが変化しないことです。ここで QWidget がフォーカスを失ったかどうかはわかりません。そこで、マウスプレスイベントにフォーカスを設定してみました。しかし、あまり役に立ちません。この問題を解決するための提案。
ありがとうございました!
c++ - Qt QTreeView - 条件が満たされない場合、前の選択に戻る
QTreeViewの選択変更で、特定の条件が満たされない場合、前の選択に戻したいです。
例えば:
QModelIndexは以前に選択されたものに関する情報を提供しないため、現在、これを行う簡単な方法はわかりません。
これを実装するための最良の方法について何か提案はありますか?
qt - カスタムモデルでドロップを有効にするために何をする必要がありますか?
に接続したカスタム モデルでドロップを有効にしようとしていQTreeViewます。
私は次のことをしました:
- でacceptDropsが有効になっていることを確認
QTreeView supportedDropActionsカスタムモデルに実装してreturn Qt::CopyAction | Qt::MoveAction- text/uri-list
mimeTypeを返すようにカスタムモデルに実装しましたQStringList - ドロップが発生した場合にドロップを処理するために、カスタム モデルに実装しまし
dropMimeDataた。
で動作させるために必要なのはこれだけですQTreeWidget。
私は続けました:
- にフラグを実装しました
return Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsDropEnabled;
それにもかかわらず、アプリを実行し、Windows のファイルを にドラッグしようとすると、QTreeView許可されていないゴーストバスターズ スタイルの円にスラッシュが表示されます。
ドロップを有効にするには、他に何をする必要がありますか?
qt - Qtエラー「永続モデルインデックスが壊れています」なぜですか?
Qt/インタビュー アプリケーションに問題があります。QTreeView を使用してツリー データを表示します。QAbstractItemModel に基づいて独自のモデルを実装しました。
アプリケーションがクラッシュする前に、次のエラーが発生します。新しいレコードを追加した後によく発生します。
このエラーの意味を教えてください。QPersistentModelIndex とは何ですか? コードで QPersistentModelIndex を使用していません。
ありがとう。
qt - QTreeView / QAbstractItemModel - アイテムの追加と beginInsertRows の使用
QAbstractItemModel に基づいてモデルを実装しており、それを QTreeView と共に使用して階層データを表示しています。データは sqlite テーブルに格納されます。
私の質問は、サブノードを追加するときに beginInsertRows を呼び出す方法です。親ノードがあり、10 個のサブノードが含まれているとします。そして、新しいサブノードを(最後に)追加したいと思います。
私はこのようにやっています:
currentNodesCount には、このサブノードの行数である値 10 が含まれています。新しいノードは 11 番目の位置 (0 から数えて 10 番目) に配置されます。
この論理は正しいですか?
手伝ってくれてありがとう。
beginRemoveRows の使用についても疑問に思っています。
これは正しいです:
currentRow には、0 から数えて削除されたノードのリスト内の位置が含まれます。
python - プログラムでQTreeviewのアクティブな行を取得して設定します(PyQt)
QTreeView(QTreeWidgetではない)のアクティブな行を取得して変更する方法はありますか?アクティブとは、選択した行ではなく、フォーカスが強調表示されている行を意味します。ペイントイベントではQStyle.State_HasFocus、アクティブな行を取得するために使用できますが、これは他の場所では機能しないようです。
qt - QAbstractItemModel + QTreeView what could couse item to become unselectable?
I'm trying to create my own model based on QAbstractItemModel. It seems to work fine. It passes modeltest assertions.
I've this strange problem when I remove a row. Removal operation works ok. But then other rows become unselectable (not all of them). Have You ever come across such behaviour ?
In which conditions QTreeView could decide that row can not be selected ?
Any ideas ? If needed I can provide the whole model implementation.
EDIT: As an alternative I'm looking for an example of 100% working QAbstractItemModel + QtSql + QTreeView implementation. Model should provide add and remove methods and it has to pass modeltest. This also would answer my question :-)
EDIT: Below is my source code. Compacted a little to make it smaller
ps I see now that there is a bug in parent() implementation. After removing a row values in nodeParams[*].row contain incorrect positions. How do You solve this issue without loading the whole tree into memory ?
qt - Qt: QtSql を使用した QAbstractItemModel 実装の例 (QTreeView で使用)
QTreeView で使用する QAbstractItemModel の実装例を探しています。モデルは QSqlQuery からデータをロードする必要があり、「怠惰な」方法で実行する必要があります。つまり、開いているノード/親のレコードのみをロードしたいということです。そして、このモデルからレコードを適切に追加および削除する方法を知りたいです。
このようなモデルを自分で実装しようとしましたが、特に行の追加と削除を開始したときに、さまざまなバグが発生しました。
そのような例をどこで見つけることができるか知っていれば、とても感謝しています。
ありがとう :)
c++ - QSortFilterProxyModelを使用して、親を持つ子ノードのみを表示するツリーモデルをフィルタリングするにはどうすればよいですか?
QAbstractItemModelから派生した作業ツリーモデルがあり、QSortFilterProxyModelサブクラスを使用してフィルター処理し、特定の基準の子ノードのみを表示したいと考えています。たとえば、次のツリーがあります。
ノードの名前がC1であるという条件でこのツリーをフィルタリングし、C1のノードとその子のみを次のように表示します。
filterAcceptsRow()が再実装されたサブクラスがすでにあります。これは、必要なことを部分的に実行できますが、C1ノードの親と祖父母は引き続き表示されます。
これは、子ノードが考慮されるためには、親がfilterAcceptsRow()テストに合格する必要があるためだと思います。filterAcceptRows()または他のメソッドを実装して、説明したことを実行できるようにするにはどうすればよいですか?
私はqtcentreとqtforumでいつかこの質問をしましたが、有用な回答は得られませんでした。filterAcceptsRow()内のbeginMoveRowsとendMoveRowsを使用して、QSortFilterProxyModelサブクラスのインデックスを直接移動しようとしましたが、危険なconst_castが原因でテストアプリケーションがクラッシュするだけです。
qt - QTreeView ドロー ドロップ インジケーター
QTreeView でドラッグ アンド ドロップを介して移動する行を実装し、行間にドロップ インジケーターを表示する必要があります。インジケーターの描画をオーバーライドする方法があるかどうか疑問に思っているので、行間の階層のすべてのレベルに対してのみ表示されます (アイテムの周りの四角形ではありません)。線は行全体と同じ幅でなければなりません (1 つの列ではありません)。 )。