問題タブ [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.
multithreading - 非UIQThreadからQStandardItemModelを変更しますか?
にバインドQStandardItemModel
し、QListView
バックグラウンド/非UIスレッドからモデルを更新するQt4アプリがあります。
場合によっては、UI以外のスレッドからQStandardItem
'ssetText(..)
メソッドが非常に繰り返し呼び出されると、アプリケーションがdataChanged(..)ハンドラーでクラッシュします。setText("xxxxx")
forループで繰り返し呼び出すことで、問題を再現できます。私のアプリでは、データはネットワークから読み取られるため、UI以外の別のスレッドでモデルを更新します。
これは一般的なpbですか?私が正しく理解している場合、これはキューに入れられた接続に関連しており、QStandardItemModel
スレッドセーフではありませんか?この問題を回避するにはどうすればよいですか?
ありがとう!
qt - C++ Qt で QStandardItemModel を並べ替える
次のような QStandardItemModel タイプのモデルがあります。
そして今、私はこのように距離に従ってソートしたい
しかし、結果は間違っています。誰かがソート方法を教えてもらえますか?
ありがとう。
qt - QListView でデータを表示する際の問題
良い一日!
クラス QListView および QTreeView のインスタンスがあります。どちらのインスタンスもモデル (QStandardItemModel) からデータをロードします。QTreeView は、役職 (例: チーフ、マネージャー、開発者など) を表示します。役職のタイトルをクリックすると、従業員のリストが表示されます。
QListView はスタッフの位置のみを表示します。
質問: QListView で従業員の名前の完全なリストを表示し、役職を表示するにはどうすればよいですか? どのメソッドをオーバーライドする必要がありますか? この状況であなたは何をアドバイスできますか?
PSありがとう!
qt - すべての行を QStandardItemModel に追加できません
ここにコードがあります。
ただし、アイテムの最初の行のみを設定します..
c++ - QTreeViewでcheckedstatusの継承を維持する
私は何か基本的なことをしようとしています:あなたはQTreeView
. 1 番目の深さはフォルダーのみ、2 番目の深さはファイルのみです。各項目の横にチェックされた状態のチェックボックスが必要です。ファイルはチェックされているかチェックされていないかのいずれかであり、フォルダーはファイルに応じて部分的にチェックされることもあります。全体として、非常に自然だと思います。
私が行くべきだった方法は、 a を使用し、QStandardItemModel
それにQStandardItem
:のカスタム サブクラスを設定することでしDescriptionFileItem
た。多分それは悪い考えだったので、もっと簡単な方法があれば教えてください。
ファイルのシグナルが、ファイルを含むフォルダーCheckStateChanged
のスロットに接続されるように、シグナルとスロットを使用してみました。UpdateCheckedStateOnChildStateChanged
これには、私DescriptionFileItem
も継承する必要QObject
がありました(ところで、QStandardItem
継承しなかったことに驚きましたQObject
)。私は当初、これが提供された基本クラスでシームレスに機能することを望んでいましたが、そうではありませんでした:emitDataChanged()
私のモデルの dataChanged() シグナルをトリガーしていないようでした...
モデルのdataChanged
信号を直接使用しても機能しませんでした。呼び出しは保護されているため、サブクラス化せずに使用することはできません (誰かがそれを正しくするのを手伝ってくれない限り、それが私の次の動きだと思います)。
現時点では、シグナル -> スロット接続が機能せず、その理由がわかりません。コンパイルとリンクは問題なく動作します。コードは次のとおりです。おそらく、私の間違いを簡単に見つけることができます。以前の試行で何が間違っていたかがわかるように、コメント行をいくつか残しています。ご意見ありがとうございます。
対応する .cpp :
そして、接続/ツリーの構築:
編集:最終的な回答、stuのおかげ(下記参照)
qt4 - QTableViewに挿入されていないモデルのデータ
モデルからにデータを挿入しようとしてTableView
いますが、データが挿入されていないため、何か問題が発生しています。ただし、テーブルは列と行で更新されます。
だから私はGraphicsView
いくつかのカスタムを描いているところがありますGraphicsItems
。新しいアイテムがシーンに追加されるたびに、モデルは更新されTableView
、データを挿入するように信号を送信することになっています。
ここでは、新しいアイテムが追加されたときにモデルを更新します。
私のカスタムgraphicsItemsのリストであるクロソイド:
信号はメインウィンドウのスロットに接続されています。
スロットは次のとおりです。
私は何が間違っているのですか?
qt - setModel()メソッドの後にQStandardItemModelにRowを追加する方法は?
ばかげた質問ですが、私はこのがらくたから約1時間で抜け出す方法を見つけることができません。QTableView
で行を追加しようとしているウィジェットがありますQStandardItemModel
。コンストラクターでは、前に
私はこの関数を実行します:
PS:StandardItemList
はただtypedef QList< QStandardItem* > StandardItemList;
したがって、最初にいくつか作成addItem()'s
し、次にsetModel()
すべての行がテーブルに表示されます。しかし、後で(現時点ではボタンをクリックしてから)別の行を追加しようとすると、
ウィジェットに変更が表示されませんQTableView
(新しい行も新しいMyNewSectionデータもありません)。どういうわけかモデルのコンテンツを「更新」する必要があると思いますが、モデルのドキュメントから正しい方法を見つけることができません...
何か助けはありますか?
ありがとう!
qt - QTableView、QStandardItemModelおよびSignals
私は、を持ってQTableView
いQStandardItemModel
ます。
私はネットワークを介してモデルを頻繁に更新し、モデルはユーザーが直接経由して更新することもありQTableView
ます。
ここで、ユーザーがデータを変更しているときにメソッドを呼び出すのが好きなので、次のようにしました。
問題はdataChanged
、アイテムがネットワーク経由で更新されたときにも、私のメソッドが呼び出されることです。
QTableview
ユーザーが???内で何かを変更している場合にのみ発行される別の信号はありますか?
qt - QStandardItem は、編集後に unsigned int を int に変換します
QStandardItemModel を使用して QTableview を作成します。QStandardItem を編集した後、タイプが unsigned int から int に変更されました。この動作は unsigned int で発生し、ユーザーが編集している間だけ、他のデータ型が残ります。
ウィンドウ.cpp
window.h
qt - 編集開始時にQStandardItemのテキストを変更する
Qt4のモデル/ビューフレームワークを使用して、「Foo(38バー)」として表示されるアイテムのリストがあります。テキストを編集可能にしたいのですが、ユーザーが編集を開始したときに、コントロールに「Foo」(名前)だけを表示し、編集が完了したときに追加情報「(38バー)」を元に戻したいと思います。
情報を元に戻す方法はわかると思いますが、編集開始時にアイテムのテキストを変更する方法はありますか?
モデルはQStandardItemModelであり、アイテムはQStandardItemのかなり些細なサブクラスです。これらは主にQListViewに表示されます。
UIはPyQtで記述されており、このためだけにC ++に飛び込むのは避けたいと思いますが、C ++ソリューションが表示された場合は、それを翻訳するために最善を尽くします。