問題タブ [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 に答える
1064 参照

multithreading - 非UIQThreadからQStandardItemModelを変更しますか?

にバインドQStandardItemModelし、QListViewバックグラウンド/非UIスレッドからモデルを更新するQt4アプリがあります。

場合によっては、UI以外のスレッドからQStandardItem'ssetText(..)メソッドが非常に繰り返し呼び出されると、アプリケーションがdataChanged(..)ハンドラーでクラッシュします。setText("xxxxx")forループで繰り返し呼び出すことで、問題を再現できます。私のアプリでは、データはネットワークから読み取られるため、UI以外の別のスレッドでモデルを更新します。

これは一般的なpbですか?私が正しく理解している場合、これはキューに入れられた接続に関連しており、QStandardItemModelスレッドセーフではありませんか?この問題を回避するにはどうすればよいですか?

ありがとう!

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

qt - C++ Qt で QStandardItemModel を並べ替える

次のような QStandardItemModel タイプのモデルがあります。

そして今、私はこのように距離に従ってソートしたい

しかし、結果は間違っています。誰かがソート方法を教えてもらえますか?

ありがとう。

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

qt - QListView でデータを表示する際の問題

良い一日!

スクリーンショット

クラス QListView および QTreeView のインスタンスがあります。どちらのインスタンスもモデル (QStandardItemModel) からデータをロードします。QTreeView は、役職 (例: チーフ、マネージャー、開発者など) を表示します。役職のタイトルをクリックすると、従業員のリストが表示されます。

QListView はスタッフの位置のみを表示します。

質問: QListView で従業員の名前の完全なリストを表示し、役職を表示するにはどうすればよいですか? どのメソッドをオーバーライドする必要がありますか? この状況であなたは何をアドバイスできますか?

PSありがとう!

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

qt - すべての行を QStandardItemModel に追加できません

ここにコードがあります。

ただし、アイテムの最初の行のみを設定します..

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

c++ - QTreeViewでcheckedstatusの継承を維持する

私は何か基本的なことをしようとしています:あなたはQTreeView. 1 番目の深さはフォルダーのみ、2 番目の深さはファイルのみです。各項目の横にチェックされた状態のチェックボックスが必要です。ファイルはチェックされているかチェックされていないかのいずれかであり、フォルダーはファイルに応じて部分的にチェックされることもあります。全体として、非常に自然だと思います。

私が行くべきだった方法は、 a を使用し、QStandardItemModelそれにQStandardItem:のカスタム サブクラスを設定することでしDescriptionFileItemた。多分それは悪い考えだったので、もっと簡単な方法があれば教えてください。

ファイルのシグナルが、ファイルを含むフォルダーCheckStateChangedのスロットに接続されるように、シグナルとスロットを使用してみました。UpdateCheckedStateOnChildStateChangedこれには、私DescriptionFileItemも継承する必要QObjectがありました(ところで、QStandardItem継承しなかったことに驚きましたQObject)。私は当初、これが提供された基本クラスでシームレスに機能することを望んでいましたが、そうではありませんでした:emitDataChanged()私のモデルの dataChanged() シグナルをトリガーしていないようでした...

モデルのdataChanged信号を直接使用しても機能しませんでした。呼び出しは保護されているため、サブクラス化せずに使用することはできません (誰かがそれを正しくするのを手伝ってくれない限り、それが私の次の動きだと思います)。

現時点では、シグナル -> スロット接続が機能せず、その理由がわかりません。コンパイルとリンクは問題なく動作します。コードは次のとおりです。おそらく、私の間違いを簡単に見つけることができます。以前の試行で何が間違っていたかがわかるように、コメント行をいくつか残しています。ご意見ありがとうございます。

対応する .cpp :

そして、接続/ツリーの構築:

編集:最終的な回答、stuのおかげ(下記参照)

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

qt4 - QTableViewに挿入されていないモデルのデータ

モデルからにデータを挿入しようとしてTableViewいますが、データが挿入されていないため、何か問題が発生しています。ただし、テーブルは列と行で更新されます。

だから私はGraphicsViewいくつかのカスタムを描いているところがありますGraphicsItems。新しいアイテムがシーンに追加されるたびに、モデルは更新されTableView、データを挿入するように信号を送信することになっています。

ここでは、新しいアイテムが追加されたときにモデルを更新します。

私のカスタムgraphicsItemsのリストであるクロソイド:

信号はメインウィンドウのスロットに接続されています。

スロットは次のとおりです。

私は何が間違っているのですか?

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

qt - setModel()メソッドの後にQStandardItemModelにRowを追加する方法は?

ばかげた質問ですが、私はこのがらくたから約1時間で抜け出す方法を見つけることができません。QTableViewで行を追加しようとしているウィジェットがありますQStandardItemModel。コンストラクターでは、前に

私はこの関数を実行します:

PS:StandardItemListはただtypedef QList< QStandardItem* > StandardItemList;


したがって、最初にいくつか作成addItem()'s し、次にsetModel()すべての行がテーブルに表示されます。しかし、後で(現時点ではボタンをクリックしてから)別の行を追加しようとすると、

ウィジェットに変更が表示されませんQTableView(新しい行も新しいMyNewSectionデータもありません)。どういうわけかモデルのコンテンツを「更新」する必要があると思いますが、モデルのドキュメントから正しい方法を見つけることができません...

何か助けはありますか?

ありがとう!

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

qt - QTableView、QStandardItemModelおよびSignals

私は、を持ってQTableViewQStandardItemModelます。
私はネットワークを介してモデルを頻繁に更新し、モデルはユーザーが直接経由して更新することもありQTableViewます。

ここで、ユーザーがデータを変更しているときにメソッドを呼び出すのが好きなので、次のようにしました。

問題はdataChanged、アイテムがネットワーク経由で更新されたときにも、私のメソッドが呼び出されることです。

QTableviewユーザーが???内で何かを変更している場合にのみ発行される別の信号はありますか?

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

qt - QStandardItem は、編集後に unsigned int を int に変換します

QStandardItemModel を使用して QTableview を作成します。QStandardItem を編集した後、タイプが unsigned int から int に変更されました。この動作は unsigned int で発生し、ユーザーが編集している間だけ、他のデータ型が残ります。

ウィンドウ.cpp

window.h

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

qt - 編集開始時にQStandardItemのテキストを変更する

Qt4のモデル/ビューフレームワークを使用して、「Foo(38バー)」として表示されるアイテムのリストがあります。テキストを編集可能にしたいのですが、ユーザーが編集を開始したときに、コントロールに「Foo」(名前)だけを表示し、編集が完了したときに追加情報「(38バー)」を元に戻したいと思います。

情報を元に戻す方法はわかると思いますが、編集開始時にアイテムのテキストを変更する方法はありますか?

モデルはQStandardItemModelであり、アイテムはQStandardItemのかなり些細なサブクラスです。これらは主にQListViewに表示されます。

UIはPyQtで記述されており、このためだけにC ++に飛び込むのは避けたいと思いますが、C ++ソリューションが表示された場合は、それを翻訳するために最善を尽くします。