問題タブ [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.
python - QTableView セルに調整可能なテキストを描画する
QTableView の QStyledItemDelegate をサブクラス化する必要があります。具体的には、特定の列の表示を変更する必要があります。通常、この列のセルにはテキストが含まれています。これは私のカスタム QStyledItemDelegate クラスの一部です:
しかし、このように表示しようとすると、少し問題があります。
期待される:
現実:
期待どおりの画像を得るには、StyledItemDelegate のこの列で何もする必要はありません。それと同じことをする必要がありますが、関数 drawText を使用します。
何か考えはありますか?
c++ - QStyledItemDelegate で QStandardItem の選択動作を調整する
QStyledItemDelegate
のアイテムのスタイルを設定するために使用していQTreeView
ます。
私のツリービューのルートは装飾されていません。以下のような関係を持つ単純なツリーです。
親と子のスタイルが異なり、親の選択が無効になっています。
子ノードの選択動作をカスタマイズして、子の周りの選択長方形がテキストの子だけではなく行全体をカバーするようにしたいと考えています。
現在の動作:
望ましい動作:
を使用して、このように選択長方形を拡張する方法はありますQStyledItemDelegate
か? adjusting
のrect
inQStyleOptionViewItem
パラメータを試してみましたQStyledItemDelegate::paint
。しかし、それは子ノードのテキストを左に移動しました。テキストノードを同じ場所に保持したいのですが、選択長方形だけを左に調整する必要があります。したがって、ペイント メソッドでテキストとピックスマップを描画するのと同じように、選択長方形も描画する方法があります (既定の選択長方形の色を使用)。
私の StyledItemDelegate のペイント方法は次のとおりです。
QStyledItemDelegate::paint メソッドで次のコードを使用しています。
qt - customdelegate の QWidget(Combobox) へのアクセスポインタ
からクラスを派生させましたQStyledItemDelegate
。QComboBox
このデリゲートでa を使用しています。このデリゲートは で使用されQTableView
ます。
私の質問は、デリゲートのコンボボックスのインデックスをプログラムで変更するにはどうすればよいですか。つまり、デリゲート クラスの外でそのウィジェットへのポインタにアクセスする方法です。CreateEditor
コンボボックスをクリックするとSetEditorData
、SetModelData
関数 (のQStyledItemDelegate
) が自動的に呼び出され、モデル内のデータを操作するために手動で呼び出すことはできないことを確認しました。
qt - カスタム QStyledItemDelegate のような背景を描画します
テーブルがあり、qt ドキュメントの例に従ってカスタム デリゲートを追加しようとしています。ただし、行が選択されている場合、背景色は正しいように見えますが、オーバーレイが表示されていないように見えます (評価セルと行の残りの部分との間の青色の背景を持つ列の違いに注意してください)。標準デリゲートのように背景を描画する最も簡単な方法は何ですか?
QItemDelegate
があるようですが、 にはそのdrawBackground
ような機能はありませんQStyledItemDelegate
。残念ながらdrawBackground
、左のセルに表示されるわずかに明るい長方形 (背景よりも上下が 1 ピクセル小さい) も省略されています。
c++ - dataChanged シグナルが ComboBoxDelegate で機能しない
私の問題は次のとおりです。
このように使用されるaQTableView
と aがあります。QStandardItemModel
およびコンボボックスデリゲート:
テーブルのセルの値が(コンボボックスによって)変更されるたびに、新しい値と変更されたセルのインデックスをキャッチする必要がありますdataChaged
。モデルに関連付けられた信号を次のように使用しています。
GetChangedValue
コンボボックスの値が変更されても、メソッドを呼び出すことはありません。ステップをスキップしていますか?
のコードの下にComboBoxDelegate
:
}
qt - QTableView セルの中央に QPixmap を描画する
私は非常にうまく機能する QTableView を持っています。最初の列にはいくつかのサムネイルが保持されています。この列の各セルでは、サムネイルは垂直方向の中央にありますが、水平方向の中央にはありません。
本当にデリゲートを使用する必要がありますか? はいの場合、QStyledItemDelegate を使用してそれらを水平方向に中央揃えにする方法は?
qt - QTableWidgetItem での描画線のレンダリングの問題
中に線を引きたいQTableWidgetItem
。線を引くために、QStyledItemDelegate::paint
メソッドを再実装しました。
しかし、スクロールしたり、QTableWidget
. 一部のアイテムの描画効果が失われます。
これが私のペイントの実装です:
TableWidget init 関数で、デリゲート項目を次のように設定します
注:各アイテムの色名は として保存していQt::UserData
ます。
テーブルの初期化では、線がうまく描画されています。バグは、テーブルで遊んでいるときです。
ここにいくつかのスクリーンショットがあります
助言がありますか ?
python - QStyledItemDelegate (PySide/PyQt/Qt) の createEditor の親は何ですか?
私は の を持っていQTreeView
ますQStandardItemModel
。カスタムデリゲートを使用してデータをペイント/編集しています。createEditor
メソッド内でparent.window()
、アプリケーション全体のメイン ウィンドウにアクセスするために使用します (別の質問のコードへのリンクについては、以下を参照してください)。
createEditor
質問:デリゲートの親は何ですか? 次のパラメータで定義されます。
紛らわしいのは、QStyledItemDelegate
が初期化されたときです。そのtype(parent)
ために出力すると、ツリーが返されます (このデリゲートを表示するようにしたツリー)。これは私が期待するものです。ただし、メソッドの実装内で同じことを実行して出力すると、単に が返されます。ここから得た提案である実行時に同じ結果が得られます。type(parent)
createEditor
QWidget
parent.metaObject().className()
ツリー ビューで定義した属性 ( などparent.rootItem
) を取得しようとすると、属性エラーが発生します。それで、ここで何が起こっているのですか?エディタの親は何ですか?
PyQtのドキュメントにはあまり助けがありません:
親引数は、None でない場合、self が PyQt ではなく Qt によって所有されるようにします。QAbstractItemDelegate.createEditor() から再実装されました。index で指定されたアイテムを編集するために使用されるウィジェットを返します。親ウィジェットとスタイル オプションは、エディター ウィジェットの表示方法を制御するために使用されます
これはすべて、ここのソリューションへのコメントで説明されている別の問題のソリューションによって開始されたことに注意してください。