問題タブ [qtreewidget]
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.
python - QTreeWidget と PyQt: ファイルからデータを保存して読み込むメソッド
を含むプロジェクトに取り組んでいますQTreeWidget
。このウィジェットには、子ノードまたは他の兄弟ノードを持つ親ノードがあります。各ノードにはID
、名前だけでなく整数の形式で一意になります。
さて.....ディスク内のすべてのノードを保存するために使用できる、または使用すべき方法QTreeWidget
と、それらを読み戻す方法?????
私がすることは、ツリーを走査し、各ノードを sqlite DB に保存することです。ツリーにあるのとまったく同じ順序で、すでにそれを行うことができます。しかし......QTreeWidget
およびその関連QTreeWidgetItem
オブジェクトには、他のノードを挿入するために使用できる一意のインデックスがありません。
ツリーを再構築するとき、子は親/祖先 (それまでにツリーに存在する) に接続する必要があります。そのために、配列内のID
(parent name, ) のように、既にツリーに追加した Parent とその s を追跡します。は、 /内のノードとしての場所とは関係がないことにparentID
注意してください。これは自分で作成し、 /が何も提供しないため、ある種のタグと同じように、ノードの名前とともに sqlite db に保存されます。parentID
QTreeWidget
WidgetItem
QTreeWidget
QTreeWidgetItem
正しい親を決定するには
ParentID
sqlite DB から取得し、- 配列または
QTreeWidget
同じものを検索しID
、 - でその親を選択し
QTreeWidget
、 - の親に子ノードとして sqlite db アイテムを追加します
treeview
。
しかし、ノードが追加されるたびに検索が行われ、QTreeWidget
/内にWidgetItem
ノードを挿入するために使用できるインデックスが欠落しているため、この方法は不器用に感じます。
これはもっとエレガントで、リソースをあまり消費しない方法で行うべきだと私は知っています。私は正確なコーディング例を探しているわけではありませんが、 fromQTreeWidget
およびから使用するメソッドとプロパティのアイデアとヒントを探していQTreeWidgetItem
ます。
何か案は?
c++ - 派生クラスを作成せずにQTreeWidgetitemClickedシグナルをシミュレートするにはどうすればよいですか?
QTreeWidgetのItemClicked()SIGNALの適切なシミュレーションが見つかりません。
ItemClicked Signalが生成されるようにそれをシミュレートする方法はありますか?
例:QTreeWidgetの派生クラスでItemClickedを発行することはできますが、(QTルールとして)その外部で発行することはできません。
python - 項目ビューの空白領域をクリックすると選択が解除されます
でツリー構造を作成しましたがQTreeWidget
、うまく機能します。しかし、それには問題があります。通常、ツリー構造ですべての選択を解除したい場合は、ツリー ウィジェットの空白の領域をクリックします。しかし、QTreeWidget
それをサポートしていないようです (または方法がわかりません)。
サブクラス化などで問題を解決できますか? 空白領域のクリックを決定することが解決の鍵のようですが、シグナルも何も見つかりません。
qt - Qt ウィジェットのサイズが width=256 に変更されますが、そうすべきではありません
フォームのセットアップ:
QSplitter
(画像上で強調表示) QTreeWidget
(左) とQTableWidget
(右) を含む:
QSplitter 内のこれら 2 つのウィジェットのデフォルト以外のプロパティ:
QTreeWidget
最小サイズ / 幅 = 150
QTableWidget
minimumSize / Width = 300
sizePolicy / Horizontal Stretch = 1
基本的に、上記の設定はこれら 2 つのコンポーネントの最小幅を指定します。これQTableWidget
は、フォームのサイズ変更中に幅を変更するものです。
右側のボタンが配置されQVBoxLayout
、サイズが固定されます。
質問:
フォームQTreeWidget
の幅のサイズを変更すると、最小の 150 から不明な 256 になり、それから大きくなり始めますが、水平方向のストレッチが 1 に設定されているため、幅がまったく大きくならないことQTableWidget
を期待しています。QTreeWidget
QTableWidget
QSplitter
代わりにこれら 2 つのウィジェットを配置すると同じことが起こるため、これは とは関係がないことに注意してくださいQHBoxLayout
。
アップデート:
maximumSize QTreeWidget
/ Width を 150 (minimumSize / Width と同じ) に設定して、このウィジェットのサイズ変更を回避すると、次のようになります。
QTreeWidget
現在は 150 に固定されていますが、ウィンドウのサイズを変更すると、2 つのウィジェットの間に空のギャップが生じます。このギャップは 256-150=106 まで拡大し、その後QTableWidget
拡大し始めます。
基本的に結果は同じなのですが、今回はQTreeWidget
今までとったエリアをこの空いた隙間に当てています。
これはQtのバグかもしれないと感じ始めました。
技術情報:
- Ubuntu 10.04 (明晰リンクス) x86_64
- GCC 4.4.3
- Qt 4.6.2
python - PyQt QTreeWidget.clear() がクラッシュを引き起こす
Python 2.5 と PyQt 4.8.6 がインストールされています。OS - Windows XP SP2。次のコードを使用して TreeWidget を埋めます。
2回目の使用でクラッシュします。次の行のいずれかをコメントアウトすると:
また
問題なく動作します。
私は60秒ごとにスレッドで関数を呼び出します。MyThread クラスの定義は次のとおりです。
このスレッドは、メイン ウィンドウのinit ()で開始されます。
ウィジェットは Qt Designer を使用して作成されました。
qt - カスタムQtウィジェットを作成しますか、それとも既存のウィジェットを実装しますか?
だから私は自分のワイヤーフレームをデザインする方法を考え出そうとしています。これは基本的に2つのQScrollAreaであり、それぞれにヘッダー(およびヘッダー内のボタン)があります。
スクロール領域の1つのデザインの中に、QListWidgetItemsのリストに似たアイテムが必要ですが、左側に小さな画像があり、右側に説明があります。
スクロール領域の別のデザインでは、色またはパターン/画像で塗りつぶされた長方形だけが必要です。それらはすべて選択可能であり、クリックされた信号を発する必要があります。
クラスアプローチを採用し、カスタムウィジェットとして機能する新しいクラスを作成する必要がありますか?QWidgetを実装し、すべてを配置する場所を計算したり、マウスイベントの背景色や不透明度を変更したりしますか?それとも私がこれに取るべき別のアプローチがありますか?私が読んだことから、カスタムウィジェットを作成することは絶対的な苦痛です。
以下は私がデザインしたいもののワイヤーフレームです-仕事をするためにすでに利用可能なものはありますか?そうでない場合は、これらをどのように設計すればよいですか?いくつかのQListWidgetsまたはQTreeWidgetsを使用することを考えましたが、それらは私が探しているすべてを達成することはできませんでした。
c++ - QTreeWidgetノードを反復処理する
過去数か月に何度か投稿したので、Qtで日記/日記のアプリケーションを書いています。エントリは、QTreeWidgetで年、月、日、およびエントリ(エントリを日で並べ替えるデフォルトの構成)または年、月、およびエントリ(同じ月のすべてのエントリがグループ化される)で並べ替えられます。
エントリノードには2つの列があります。最初の列は表示され、エントリ名を保持します。2番目の列は非表示で、データベース内の対応するエントリの行番号を保持します。そのエントリが選択されると、プログラムはその行番号に基づいて選択クエリを実行し、コンテンツを表示します。ルート、年、月、(および有効な場合は日)ノードにも2番目の列がありますが、それらの行番号は常に-1です。(有効な行数は0から始まります)
ジャーナルツールバーには、ユーザーが次のエントリと前のエントリを表示できるようにする戻るボタンと進むボタンがすでにあります。この関数はすでに機能していますが、ツリーで現在選択されている項目は変更されません。これを修正しようとしています。
これを行う最良の方法は、正しい行番号が見つかるまで、それぞれの2番目の非表示列の値をスキャンするループ関数であると判断しました。戻る/進むボタンをクリックするたびにこの関数が再度呼び出されるため、これが機能するようになると、選択したノードは常に表示されている現在のエントリと一致します。
欠点は、データベースが巨大になるとこの方法が遅くなる可能性があることですが、それについて私ができることはあまりありません。ユーザーはエントリを削除したり、シャッフルしたりする可能性があるため、rownumber++またはrownumber--に依存するだけで問題が発生する可能性があります。データベースは欠落している行番号を入力せず、次の行番号に進むだけなので、データベースでこれまでに作成されたすべての行が常に存在するとプログラムが常に想定している場合、問題が発生する可能性があります。
私の質問は、QTreeWidgetのすべてのノードの特定の列をスキャンするにはどうすればよいですか?
python - PyQt-XMLをQTreeWidgetにロードします
私はPyQtで基本的なXMLストーリーメーカーを作ろうとしています。これまでのところ、私は自分自身のすべてを理解することができましたが、私は少しの障害に遭遇しました。XMLファイルをQTreeWidgetにロードする方法がわかりません。階層を保持する必要がありますが、その階層は一見ランダムに見えます。コードを投稿しますが、Open関数が機能しないことに注意してください(明らかな理由で):
python - PyQT QTreeWidget 反復処理
QTreeWidgetに2 つの列があり、1 つの列は URL のリストを表し、2 番目の列は結果を表します。最初の列に URL のリストを読み込んだので、このリストを反復処理し、反復中に 2 列目のテキストを変更します。これを達成する方法は?
c++ - QTreeWidgetItem:選択したアイテムを取得するにはどうすればよいですか?
私は現在、Qtを使用して職場でGUIインターフェースを構築している学生プログラマーであり、現在、QTreeWidgetItemのQtドキュメントで解決策を見つける際に問題が発生しています。現在、のインスタンスを編集、削除、およびコピーするためのボタンを備えたインターフェイスがありますQTree
。私のツリーがどのように配置されているかを理解することが重要かもしれません。に表示されるアイテムはQTree
、この方法でベクトルから動的に追加されます。
QTree
ここで、ユーザーが選択したアイテムを見つけて、ベクターから削除できるようにする方法が本当に必要です。私の疑似は、選択された行を識別し、削除を確認し、itemAt(item selected)を削除し、ID列を再割り当てすることです。各インスタンスにはこの列の番号が割り当てられているためです。私はこの投稿を見ていました、3年前に投稿されました。しかし、それはほとんど、私がすでにレビューしているドキュメントを参照しているだけです。さらに、他の回答は正しい方向に進んでいるように見えるため、選択された回答は非常に決定的ではないようです。私は、この答えが私の目の前にあるかもしれないことを理解しています。しかし、私が言えることは、noobsはnoobsになり、実装を理解するのに苦労しています。私はこのタスクの学習と達成にのみ興味があるので、生産的なフィードバックのみを残してください。よろしくお願いします。