問題タブ [qstandarditemmodel]

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.

0 投票する
1 に答える
2193 参照

qt - appendRowの後のQStandardItemModelを持つQSortFilterProxyModelが機能していません

ここに私が持っているもの:

  • ウィジェットQTreeView(*);
  • ソースモデルMainModelはから継承しQStandardItemModelます。data() const再実装された仮想メソッドはありません。
  • プロキシは;MainFilterProxyModelから継承します。QSortFilterProxyModel

ツリー:

したがって、主な問題は、 (**)コードのようにCHILD行を追加しようとしたときに発生します。ドキュメントがソースモデルに追加された後のフィルタープロキシモデルは、新しい行を認識せず、ツリーに表示されませんでした。

QStandardItemModelメソッドが彼の仕事をするときからプロキシがシグナルを受け取らなかったと確信しているので、プロキシはappendRow新しい行をフィルタリングできず、それを表示しませんでした。

何か助けはありますか?

ありがとう。

PS:プロキシをオフにすると、すべてが正常に追加されます。しかし、問題は代理ではありません。プロキシは、メインソースモデルに追加された新しい行に関するシグナルを取得しません...


(*)ここにありQTreeViewます:


(**)これが私の追加機能です:

0 投票する
1 に答える
2301 参照

qt - 私のユースケースでは QStandardItemModel::removeRows() が機能しません

基本的に、モデル内のすべての行を削除したいと考えています。ヘッダーを保持したいので、removeRows(..)代わりにを使用したいと思います。clear()

私は何かを見逃していると思います(docu here)、私のコードは非常に単純です:

cたとえば、4 ですが、r常に false です。最初のインデックスとして 0 と 1 を試しました。使用clear()作品。上記のコードはまったく影響を与えません。

0 投票する
1 に答える
2257 参照

qt - QTableView で選択された行の番号を返す

次のコードがあります。

ボックスをクリックするだけで、選択したフィールドの行番号を返すことができます。

これを行う方法はありますか?

0 投票する
2 に答える
6317 参照

qt - ListViewアイテムを昇順で並べ替える方法は?

ListViewアイテムを昇順で並べ替えようとしたので、

正常に動作しますが、Qt::AscendingOrderポリシーが好きではありません。実際、この関数は最初に大文字で始まる単語をソートし、次に小文字で始まる他の単語をソートします。次に、両方の結果を連結します。例:

並べ替えポリシーをカスタマイズする方法はありますか?Plz助けて...よろしくお願いします。

0 投票する
1 に答える
549 参照

qt - Qt モデル / ビュー フレームワーク、ツリー ビュー

Qt とモデル/ビュー フレームワークを試しています。
ツリー ビューで表示および編集したいデータがあります。
ドキュメントとこのチュートリアルを読みましたが、私の場合のベスト プラクティスは何なのかまだわかりません。
データはサーバーから取得され、次のようになります。

ID は「実行中の」番号であり、すべて一意であるため、データは次のようになります。

ID はエンド ユーザーにとって重要ではないため、表示しないでください。

これを階層に入れるのは、再帰関数を使用して非常に簡単です。(ただし、ここでのアイデアも大歓迎です)

  1. サーバーから取得したデータを直接に入れるべきQStandardItemModelですか?
  2. 自分のクラスを作成して継承することに意味はありますQStandardItemModel/Itemか?
  3. 各フィールド (id、name、price) は独自のものQStandardItemですか?

#3で「はい」の場合、名前を含むアイテムを編集するときに、その名前に関連付けられたIDを取得して、変更をサーバーに戻すにはどうすればよいですか。

これらが基本であることを理解しているので、推奨される構造のスケッチは素晴らしいでしょう.

0 投票する
1 に答える
945 参照

c++ - QStyledItemDelegate と QStandardItem の変更テキストを防止し、選択とコピーのみを有効にします

私は単純な QStandardItem と QTableView と QStyledItemDelegate を持っています。彼らにはデリゲートがあり、ユーザーがテーブルの列の内容を変更する可能性を無効にし、選択とコピーのみを許可したいと思います。に関係していると思われQStyledItemDelegate::createEditorます。

0 を返すように設定すると、すべてが無効になります。

私の質問は、どのように定義して、テキストを削除または変更するなどの編集オプションを無効にして、選択してコピーすることしかできないようにすることです

0 投票する
1 に答える
1766 参照

qt - QListViewを使用したQStandardItemModel、外部ドロップアクションは機能しません

Qt4.2を使用しています。

.desktopファイルから取得したいくつかのアイテムを表示するためにQStandardItemModelを使用するQListViewを備えたQMainWindowがあります。

今、私はアプリにドロップアクションを実装しようとしています。たとえば、.htmlファイルがfirefoxアイテムにドロップされたときにfirefoxを実行できます。

だからこれは私がやったことです:

-listViewの場合:

-standardItemModelの場合:

その後、アプリにファイルをドロップしても、dropMimeDataデバッグメッセージが表示されません。

0 投票する
1 に答える
2555 参照

c++ - QStandardItemModel または QTreeView でアイテムをフィルタリングする

QTreeViewQStandardItemModelと同じデータを表します。データはテーブルです - 行と列があり、QSqlQuery を使用して DB から取得します。列の値に基づいて行をフィルタリングするにはどうすればよいですか? たとえば、3番目の列に整数値があり、ボタンをクリックすると、この数値が 10 を超える行のみを表示したいとします。別のQSqlQuery.execを実行できますが、QTreeViewまたはQStandardItemModelで実行できますか?

0 投票する
0 に答える
726 参照

qt - QT: Qtableview ラッピング テキスト

Qt の QtableView を使用しています。私は1つの問題に直面しています。完全な cell にコンテンツを修正できません。私の場合、列のサイズが固定されており、行を引き伸ばすことができます。以下はサンプルコードです

ご覧のとおり、各セルに「Swaminarayan maharaj」が必要ですが、Swaminarayan はセルの最初の行に、「maharaj」は 2 行目にある必要があります。つまり、各セルはコンテンツを 2 行で表示する必要があります。

次のリンクで Qt::TextWordWrap を見つけましたが、コードで使用できません
http://www.qtcentre.org/threads/27839-For-Qt-4-6-x-how-to-auto-size -指定された幅に収まるテキスト

0 投票する
0 に答える
469 参照

c++ - QTableView::setModel() を呼び出した後に QStandardItemModel と QTableView のデータを編集する方法

彼ら!!

QTableView で使用される QStandardItemModel に製品のリストを入力しようとしています。しかし、プログラムの開始後にこれらのデータを変更することはできません。

どうすればできますか?QStandardItemModel からデータを変更し (例: 行データの変更、行の削除、新しい行の挿入、すべての行の削除と行の再挿入)、動的に QTableView に表示します (例: 製品の配列に新しい製品を追加することによって)または addSomeNewLine または editSomeNewLine ボタンをクリックします)

ありがとう