問題タブ [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.
qt - Qt: QStandardItemModel で QTableView にカスタム エディター (コンボ ボックス) を持つ QItemDelegate を作成します。
特定の列の各行にコンボ ボックスを表示するテーブルを Qt に実装する必要があります。
これまでのところ、この例に基づいています: http://doc.qt.nokia.com/4.7-snapshot/itemviews-spinboxdelegate.html およびこの質問: QStandardItem + QComboBox QItemDelegate を作成することに成功しました。
私の問題は、main.cpp の main() 関数から実装するとすべて正常に動作することですが、Qt Designer にテーブルを挿入して mainwindow.cpp の MainWindow クラスの関数内で使用するとうまく動作しません。 .
手がかりを教えてください。前もって感謝します!
main.cpp の委任 (2 番目の列をダブルクリックすると、コンボ ボックスが表示されます):
mainwindow.cpp の代替 1 での委任 (空のテーブルが表示されます)
mainwindow.cpp の代替 2 の委任 (表は表示されますが、2 番目の列をダブルクリックすると、コンボ ボックスは表示されません。代わりに、通常のスピン ボックスが表示されます):
qt - Qt、QStandarItemModel: カスタム QComboBox のデリゲーション項目がモデルのインスタンス化子からコンテンツを埋めます
QComboBox
特定の列の各行にを表示するテーブルを Qt に実装する必要があります。
この質問に基づいて: QStandardItem + QComboBoxを作成することに成功しましたQItemDelegate
。その例では、QComboBox
コンテンツはクラスで静的に定義されComboBoxDelegate
ていますが、私の場合はQComboBox
、が作成される関数内でコンテンツを定義する必要がありますQStandardItemModel
。
モデルはMainWindow
クラス メソッド内で定義されます。
ComboBox
次に、デリゲート クラスからコンテンツを復元できるはずです。
プロジェクトは正常にコンパイルされますが、セルをクリックしてQComboBox
値を変更すると、プログラムがクラッシュし、「無効なパラメーターが C ランタイム関数に渡されました」というメッセージが表示されます。
qt4 - QTableViewのカスタムソート方法?
QTableViewまたはモデルのカスタム並べ替え方法を設定するにはどうすればよいですか?(どの関数を再実装する必要がありますか)
デフォルトの並べ替えアルゴリズムは文字列用です。特定の列の番号の並べ替え方法が必要です。
ありがとう。
c++ - QTableViewQStandardItemModelユーザーエントリを元に戻すか元に戻す
QStandarItemModelによってポップアップされたQTableViewのユーザーエントリを元に戻す、または元に戻すにはどうすればよいですか?
dataChangedシグナルをハンドラーに接続してデータを検証しました...
...しかし、ユーザーエントリが間違っている場合は、ユーザーエントリをアイテムの以前の値に戻すか元に戻したいと思います。
QAbstractItemModelから継承されたrevert()メンバーについて読みましたが、正確にどのように機能するのか理解できません。ドキュメントには、「キャッシュされた情報を破棄する必要があることをモデルに通知する」と記載されています。しかし、ユーザーが入力したデータがキャッシュされているのか、すでにモデルに保存されているのかはわかりません。
とにかくやってみたら…
...間違ったユーザーエントリの後、それは機能しません。
前もって感謝します!
python - QStandardItem データ属性に基づく QTableView 項目の選択
アイテムごとにカスタムデータ属性が追加された(グラフプロットデータ)の階層を含むモデルを持つQTableViewで任意の複数選択を行う最も効率的かつ技術的に(Python / PyQt4)正しい方法は何でしょう。QStandardItems
isSelected
isSelected
詳細: テーブルに加えて、データに対応する範囲 (属性はこれらの範囲から直接取得)を出力する matplotlib プロットがありQTableView
、これら 2 つの GUI 要素間に少し相互作用を追加したいと考えています。
つまり、matplotlib プロットの選択が反映されQTableView
、その逆も同様です (これは、選択の変更を対応するインデックスの読み取りにフックし、それらをグラフ プロットにフィードバックすることで得られます)。
うまくいけば、この説明は理にかなっています。ありがとう。
qt - TreeViewアイテムに異なるURLを割り当てる方法
Qtは初めてです。QStandardアイテムモデルを使用してQtreeビューを作成しました。次に、URLをアイテムに設定します。ツリービューアイテムにURLを割り当てるにはどうすればよいですか。
treeview - オーバーロードされたモデルでpyqtツリービューが表示されない
ツリービューの助けが必要です。モデルを次のように指定すると
ウィンドウからツリーにアイテムを追加できます
しかし、モデルをオーバーロードしようとすると、ツリービューが更新されません。コードはツリービューを更新できません。誰か説明してくれませんか?
qt - QAbstractItemModelを回避するためのQStandardItemModelのサブクラス化
ツリーのような構造のモデル/ビューを実装していて、特定のクラス(ここでは「appSpecificClass」と呼びます)をラップするQStandardItemModelを試すことにしました。
基本的に、そのクラスの一部(名前や一部のデータなど)をモデルに表示し、モデルを変更すると(編集ロール、またはドラッグアンドドロップで)、appSpecificClassに影響を与えるようにします。 (つまり、モデルに表示されている名前を変更すると、appSpecificClassのモデルのアイテムに関連付けられているオブジェクトの名前も変更されます)。
そこで、appSpecificClassへのポインターのみを持つappSpecificItemによってQStandardItemをサブクラス化することから始めました。appSpecificItemを作成すると、テキストとアイコンがappSpecificClassから呼び出され、すべてが正常に機能します。
ただし、appSpecificItemからデータを変更する場合、当然、appSpecificClassは変更されません。これまでのところ、仮想関数(またはその他)のオーバーロードを介してappSpecificItemのポインターと対話する方法が見つからなかったためです。
誰かがこれを行う方法を知っていますか/これが可能であれば?たとえば信号の場合、どうすればよいですか
が発行されたら、appSpecificItemのポインタを変更できます。
そうでない場合は、モデルを最初から実装するための優れたチュートリアルはありますか?自分で試してみましたが、簡単なことではありません。理想的には、QStandardItemModelのようなモデルが必要ですが、もう少し抽象化されています(appSpecificClassをモデルに配置できるように)。
qt - QStandardItemが奇妙な方法で行を挿入する
私はテーブルを作成し、このように行を挿入しています。テーブルに挿入される行は1つだけで、条件が多すぎて、条件が満たされない場合はエラーが表示されます。問題は、ある行が条件を満たす条件で挿入されたときに、他の行が再び満たされている条件で挿入された場合、その行を再書き込みせず、その行の次の2列を使用して前の2列を空に保つことです。
例
最初の結果:
2こんにちは
2番目の結果:
コード
事前に助けてくれてありがとう
qt - TableViewモデルへのポインタを操作するには?
TableView のモデルを操作する必要がある場合は、関数を使用してこのモデルを取得する必要がありますtableView->model()
。しかし、これは へのポインタを返します。これは へのポインタでQAbstractItem
ある必要がありQAbstractModel
ます。
だから...以下に示すように、動的キャストを使用して変換します。
しかし、このポインターは NULL を返し、その理由がわかりません。
初期化が必要ですか?