問題タブ [qstyleditemdelegate]

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 に答える
1492 参照

c++ - QStyledItemDelegate は、デフォルトの QLineEdit エディターのテキストを部分的に選択します

QStyledItemDelegate現時点では関数を再実装していないサブクラスがあります(質問を簡単にするため)。

デフォルトQStyledItemDelegateの実装では、ユーザーが でテキストの編集を開始するQTableViewと、デリゲートQLineEditはモデルからのテキストを使用して を描画し、そのすべてを選択します (編集のためにすべてを強調表示します)。

テキストは「document.pdf」などのファイル名を表します。ユーザーはこのテキスト全体を編集できますが、最初はベース名部分 (「ドキュメント」) のみを強調表示し、接尾辞 (「pdf」) は強調表示したくありません。これどうやってするの?QStyledItemDelegate(これを行う方法のロジックは必要ありません。テキストの一部を強調表示する方法を知る必要があります)

私はもう試した:

  • 一部のテキストを強調表示するためにsetEditorData()使用されます。QLineEdit::setSelection()これは効果がありません。

  • paint()他の回答者が同様の質問に推奨したものに基づいてペイントしようとしましたが、成功しませんでした。の経験はほとんどありませんQPainter。以下に例を示します: QStyledItemDelegate を使用して QStandardItem の選択動作を調整する

助けてください、そして前もって感謝します。テキストの最初の 3 文字を選択するなどのコード スニペットをいただければ幸いです。

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

python - QStyledItemDelegate のペイント更新の問題

私は現在、モデル ビュー アプローチに頭を悩ませ、サムネイル ビューア アプリケーションを作成しようとしています。

この例では、単純に 20 個のボックスを描画しようとしていますが、マウスの動きで更新されるランダムな選択のように見えます。スクロールすると事態がさら​​に悪化し、描画にボックスなどしか表示されないことがあります。また、テキストがまったくレンダリングされないようです。

私には、ペイント メソッドの更新/更新の問題のように見えます。ここで何か不足していますか?

塗料の問題

最終的には、たくさんのアイテムを表示する必要があります。すべてには、いくつかのラベルと、実行時に更新する必要があるピックスマップが含まれています。だから私はそれらを描くことが最速の解決策になると思いました. 別の方法として、次のようにペイント メソッドでウィジェットをレンダリングしてみました。

これは遅いようですが、少なくとも機能しています。

私の問題を説明するための最小限の実例を次に示します。

前もって感謝します。次に探すべきヘルプやポインタは大歓迎です!

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

c++ - QAbstractItemModel の dataChanged シグナルのスロットで送信者オブジェクトを取得できません

QAbstractItemModel をサブクラス化し、dataChanged シグナルのスロットでウィジェットを取得しようとしています。

ここでは、毎回 null ウィジェットを取得していますが、qobject_cast と同じ結果です。

テーブルビューでQStyledItemDelegateを派生させるデリゲートクラスにコンボボックスウィジェットを設定しています。

この場合、送信者オブジェクトを取得するにはどうすればよいですか? ありがとう。

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

c++ - カスタム QStyledItemDelegate - モデルへの編集の適用

私のプロジェクトでは、関数QStyledItemDelegateからカスタム エディターをサブクラス化して返しました。createEditor

編集が終わったら、新しいデータをモデルに書き戻したいです。だから私はオーバーライドしsetModelDataました。

これは機能しますが、問題はsetModelData、エディターがどのように閉じられても呼び出されることです。EndEditHint、を使用してエディターを閉じた場合にのみ、新しいデータを書き込みたいですQAbstractItemDelegate::SubmitModelCache。そこで、closeEditor信号を という名前のスロットに接続しましたeditFinished

これで、エディターを介してエディターがどのように閉じられたEndEditHintか、およびデータをモデルに書き戻す必要があるかどうかを確認できるようになりました。Buuuuut、setModelDataget はcloseEditorシグナルの前に呼び出されます。closeEditorシグナルが最後に呼び出されたときに、どのようにデータをモデルに書き戻すのでしょうか? ここで何か不足していますか?

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

qt - スクロール時にQStyledItemDelegateカスタムウィジェットが正しく描画されない

私の以前の質問QWidgetの 1 つは、 2 つQLabelの s を並べて含むカスタマイズされた QStyledItemDelegate を扱います。

ジョセフ・アイルランドが提供した簡単な解決策に本当に満足しました. 残念ながら、与えられた解決策は壊れていますが、すぐには気づきませんでした。含まれるQTableWidgetmyQStyledItemDelegateが小さくなりすぎると、スクロールバーがアクティブになります。

スクロールすると、セル要素の正しい描画が破壊されます。これは、ある種の更新の問題のようです。のビューポート領域の周りに長方形を描いた後、これに気付きましたQAbstractScollArea

激しくスクロールすると、私のテーブルは次のようになります。

激しいスクロールでテーブルが壊れる

セルの内容が適切な場所に描画されないか、結局描画されないように見えます。2 行ごとに奇妙に発生します。さらに、私のビューポート領域の周りに描かれた四角形QAbstractScrollAreaがめちゃくちゃです。ウィンドウが再描画された場合 (ウィンドウを非表示/表示)、すべて問題ありません。

この種の更新/再描画の問題に対する解決策は何ですか? スクロールが終わったら再描画する必要があるのでしょうか?

ジョセフ・アイルランドが投稿した私の適応ソリューションは次のとおりです。

ヘッダー ファイル: TwoNumbersDelegate.h

ソース ファイル: TwoNumbersDelegate.cpp

次のプログラムがテスト ランナーとして機能しました。