問題タブ [qfilesystemmodel]
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 - Qt アイテム デリゲート
私は Qt が初めてで、ゆっくりと自分の道を見つけています。私の目標は、名前が長すぎるとテキストが分割される OS で見られる動作と同様に、アイコン内のファイルの名前が折り返されるようにすることですQListView
。QFileSytemModel
インターネットを熟読した結果QAbstractItemDelegate
、特別な描画とテキスト ラッピングを行うために拡張するカスタム クラスを作成する必要があると思います。ただし、ItemDelegate
在庫QListView
クラスがそのまま使用するデフォルトを見つけることができませんでした。
デフォルト クラスが必要な理由は、独自のレンダラーで作業しているときに、Qt コンポーネントのライフサイクルについて調べて理解できるようにするためです。QListView
クラスのデフォルトのレンダラーがどこにあるか知っている人がいるかどうか疑問に思っていましたか?
qt - QTreeViewでアイテムを見つける方法は?
にはアイテムを見つける方法があることは理解しQTreeWidget
ていますが、 を使用したいので、QFileSystemModel
に限定されQTreeView
ます。ただし、すべてのアイテムを a から返してリストに配置できるようにしたいと考えてQTreeView
います。
からすべてのインデックスを取得できると思っていましたがQTreeView
、その方法がわかりません。
たぶん次のようなもの:
しかし、私はこれが正しくないことを知っています。からリストにアイテムまたはアイテムのアドレスを取得する良い方法は何QTreeView
ですか?
qt - QFilesystemModel のフィルタリング
QListviewでQFileSystemModelを使用して、ディレクトリからすべてのファイルを表示しています。そのモデルをフィルタリングして、次のようなファイルのカテゴリを表示したいと思います。
- テキストファイル: *.txt *.csv *.tab
- 音楽: *.mp3 *.flac *.ogg
- ムービー : *.avi *.mkv
私の現在のコードは次のとおりです。
(...)
すべてのタイプのファイルがディレクトリに存在する間、そのコードは何も表示しません。
その上、私が試したことがうまくいかなかったこと(ポインターは、さらなる読者にとって役立つかもしれません):
- setNameFilters : うまく機能しますが、すべてのファイルを表示できます (フィルタリングされていないものはグレー表示されます)。
- カスタム ソート/フィルター モデルの例-> QSortFilterProxyModel を使用している間、この例はやや複雑すぎて、ファイル拡張子を除外するだけでは済みません。さらに、ここのように多くのフィルターを使用する場合に最適な方法ではない正規表現を使用しています。
- qt-project から興味深いスニペットも見つけましたが、複数の拡張子を持つ行に実装する方法を見つけることができませんでした
c++ - QFileSystemModel および QTreeView - ビューをリセットするときの奇妙な動作
Qtの公式フォーラムに書いたのですが、死んでいるようなのでここにコピペします。
ファイルをコピーするための小さなプログラムを書いています。を使用QTreeView
し、から継承したQFileSystemModel
ので、のすべての行にチェックボックスを追加できましたQTreeView
。setNameFilters
に接続されたメソッドも使用するQLineEdit
ため、ユーザーは に表示するファイル拡張子を指定できますQTreeView
。次の動作を発見しました。
1) プログラムを実行し、フィルタする拡張機能を入力すると ( のノードに触れずにQTreeView
)、すべて正常に動作し、提供した拡張機能を持つファイルのみが表示されます (もちろん、フォルダも表示されます)。拡張子を変更してビューを更新すると、"C:/"
ドライブのすべてが更新され、新しい拡張子のセットのみが表示されます。以前に触れたことのない他のドライブを展開すると、ファイルも正しく表示されます。
2) プログラムを実行して、自分のドライブ"C:/"
と"D:/"
ドライブを展開すると、すべてのディレクトリとファイルが表示されます (予期される動作)。次に、いくつかの拡張機能を作成すると、ビューが更新されます。ドライブを拡張する"C:/"
と、すべて正常に動作し、提供した拡張子を持つファイルのみが表示されます。"D:/"
それから私は運転に行き、ここに問題があります。すべてのファイルを表示します。私が提供したフィルターは無視されます。以前に開いたことのないドライブを開く"E:/"
と、ファイルはドライブのように正しくフィルタリングされます"C:/"
。
setRootPath
私は、この動作はメソッドと関係があると結論付けました。これは、私のQTreeView
唯一の"C:/"
ドライブでフィルターが正しく機能しているためです。フィルターの変更前に拡張された他のすべてのドライブは機能しません。展開されていないものは問題なく動作します。
問題は、これを機能させる方法です。ユーザーがフィルターを変更し、reset() メソッドが起動された後、QTreeView
ルート パスと展開されていない要素だけでなく、全体が更新されますか? すべてのドライブを子として持つルート パスが存在し、期待どおりに動作する可能性がありますか? QTreeView
または、呼び出し先に仮想フォルダーを作成し、"MyComputer"
それをすべてのドライブの親に設定する必要がありますか? しかし、利用可能なすべてのドライブのリストを取得するにはどうすればよいでしょうか?
私が書いたことがあなたにとって明確であり、これを機能させるのを手伝ってくれることを願っています.
編集: 関連するコードを追加します。さらに必要な場合は、お問い合わせください。
qt - qfilesystemモデルのヘッダーテキストでqtreeviewの先頭のスペースを避ける方法は?
私はQTreeViewでQFileSystemモデルを使用しています.このようにQFileSystemモデルをサブクラス化することでテキストを変更できます...
しかし、ヘッダー テキストの先頭のスペースを削除することはできません。その方法を提案できますか。