問題タブ [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 - PyQtでアイテムビューにリッチ(html)テキストを表示させる方法は?
このスレッドのコードをPythonで翻訳しようとしています:
要素のサイズと位置が正しく計算されていないのは、おそらく元のコードからスタイル関連の部分がまったく理解されていないためです。誰かが私を助けることができますか?
qt - QListView の QWidgetDelegate の paint() メソッドで QWidget をレンダリングする
でカスタム ウィジェットのレンダリングを実装するのに問題がありQListView
ます。現在、に基づいてQListView
呼び出されたカスタム モデルを表示しています。PlayQueue
QAbstractListModel
これは単純なテキストでは問題なく機能しますが、各要素のカスタム ウィジェットを表示したいと考えています。したがって、次のようにメソッドQStyledItemDelegate
を実装するためにa をサブクラス化しました。paint
選択した背景は適切にレンダリングされますが、ウィジェットは表示されません。Qtの例のような簡単なQPainter
コマンドで試してみましたが、これはうまくいきます:
だから私は次のようないくつかの変更を試みました:
QStyledItemDelegate
に変更QItemDelegate
- レンダリングの追加
painter->save()
と周辺painter->restore()
- ウィジェット ジオメトリを使用可能なサイズに設定する
しかし、私は少し立ち往生しています。インターネットでしばらく検索しましたが、私が望むことを実行する例が見つかりません。それらはすべて、ウィジェットの編集 (はるかに簡単です) またはカスタム描画コントロール (事前定義されたもの) について話します、進行状況バーなど)。しかし、ここでは、いくつかのレイアウト、ラベル、およびピックスマップを含む、作成したカスタム ウィジェットが本当に必要です。ご協力いただきありがとうございます!
Ubuntu 11.04 で GCC に Qt 4.7.3 を使用しています。
qt - QStyledItemDelegateでさまざまな背景を描画する方法は?
問題:
QTreeView
オブジェクトと、QStandardItemModel
ウィジェットを表示するためのモデルがあります。- 一部のアイテムについて
setData
は、パラメーターを使用してそれらを分割するメソッドを使用してデータを設定しました。 - そのため、アイコンといくつかのテキストデータを含むアイテムに対して異なる背景のピックスマップを描画する必要があります。
QStandardItem
- そして、すべてのアイテムオブジェクトを再描画したくありません。つまり、アイコンとテキストです。背景を変更するだけです。
最初に、私はそれを考えていました:
Qt Designer
2つの異なる背景画像を持つオブジェクトにCSSスタイルシートを設定できましたが、メソッドQStandardItem
がありませんsetProperty
...
例:
QStyledItemDelegate
次に、クラスから継承された独自のデリゲートを作成し、メソッドpaint
を再実装しましたが、コードが上書きされるため、バックグラウンドを変更することはできません...QStyledItemDelegate::paint( painter, opt, index );
drawPixmap
例:
だから私は立ち往生しています...
expand - Qt: フィルタリングを使用した ProxyModel、QTreeView、およびデリゲート セットアップが正しく更新されない
親行の値 (QStyledItemDelegate 派生クラスを介して QComboBox で選択) の値に応じて行のみを受け入れる、filterAcceptsRow() でカスタム フィルタリングを使用して QSortFilteredProxyModel を表示する QTreeView をセットアップしました。たとえば、行で「Type " 値 "BMW", この特別なケースの子を表示したい. これは最初のアイテムに最適です. Item1 の複数レベル下 (最大 5 レベル) 内でこれらの値を選択できます. すべてがうまく機能します.
ただし、item1 とこのカスタム フィルタリングを試してから item2 を追加すると、問題が発生することに気付きました。最初に気付いたのは、QTreeView が item1/item2 の共通の親を展開解除し、ルート アイテムの子のみを表示することです。通常の動作 (および item1 を追加するときの動作) は、item1 の親を展開することです。これが 2 番目の項目で混乱する理由は、item1 の子設定で遊んでいる場合のみです。また、item2 でフィルタリングが正しく機能しないことに気付きました。item2->Type に QComboBox があり、item2->Type の値に応じて子を持ちます。QComboBox のデフォルト値の最初の子は、本来のように表示されますが、QComboBox を変更すると、ビューは更新されなくなり、 item2/item3/... 内のこの最初にロードされた子にとどまります ただし、Delegate::setModelData は正しい値/インデックスで呼び出され、それに応じて TreeItem->setData() を呼び出します。フィルタリングが TreeItem->data() の古い値に固執しているように見えるだけです。繰り返しますが、これは item1 で遊んだ後にのみ発生することに注意してください。そのアイテムをそのままにしておくと、他のすべてのアイテム (item2、item3、...) で正しくプレイでき、問題なく動作します。
誰かが助けてくれたらとてもうれしいです。
expand() が item1 と item2 の挿入で同じように呼び出され、 item1 でうまく機能するにもかかわらず、expandedStates の「リセット」を引き起こす可能性があるのは誰ですか? 何がさらに問題を引き起こす可能性がありますか?
ExampleDelegate.h
ProxyModel.h
ProxyModel.cpp
pyqt - pyqt:QStyledItemDelegateでアイテム境界線を設定します
QListViewでアイテム境界線を設定しようとしています。
マウスをアイテムの上に置くと線が表示され、マウスをアイテムから離すと線が通常に戻ります。それが私が欲しいものです。
それで、私はQStyledItemDelegateを使用します、そしてそれはそうするようです、それは適切ではありません。
コードは上にあります。
アイテムを選択すると、めちゃくちゃになりました。
選択したアイテムには境界があり、消えません。
どうすれば修正できますか?
c++ - QStyledItemDelegate と QStandardItem の変更テキストを防止し、選択とコピーのみを有効にします
私は単純な QStandardItem と QTableView と QStyledItemDelegate を持っています。彼らにはデリゲートがあり、ユーザーがテーブルの列の内容を変更する可能性を無効にし、選択とコピーのみを許可したいと思います。に関係していると思われQStyledItemDelegate::createEditor
ます。
0 を返すように設定すると、すべてが無効になります。
私の質問は、どのように定義して、テキストを削除または変更するなどの編集オプションを無効にして、選択してコピーすることしかできないようにすることです
qt - 1つのQAbstractModelItem内のQTextEditとQPushButton
QTreeViewを使用してオブジェクトのプロパティを視覚化します。QtDesignerのプロパティエディタのようなものです。私はあらゆる種類の値、bool、text、colorvalues、enum、float、int、filenamesなどを持っています。
すべてのオブジェクト値を保持するためにcoustomモデルを使用し、coustomデリゲートを介して表示します。したがって、デリゲートはデータの種類を検出し、編集用の特別な表現を持ちます。たとえば、int / floatの場合はスピンボックス、boolの場合はチェックボックスです。現時点では、Delegateはスピンボックスなどのエディターを作成し、値をチェックボックスとして表すためにpaint()関数をオーバーライドします。
ここで、ユーザーが2つの方法で値を編集できるようにします。ユーザーは、編集、コピー/貼り付けなどに通常のテキストフィールドを使用して値を変更するか、ボタンを押してQFileDialogを開き、正しいファイルを選択する必要があります。
次のようになります。
どうすればこれを達成できますか?
QFileDialogを開くには、テキストフィールドとボタンが必要です。
Qt5.0を使用しています。ヘルプのためのThx
python-2.7 - QComboBox のデリゲートがデフォルト項目で機能しない
QComboBox を使用して、データベースから取得したいくつかの MAC アドレスを整数として表示しています。より使い慣れた「ドット付きオクテット」形式で表示するために、次のQStyledItemDelegateを作成しました。
しかし、 QSqlTableModelとQComboBoxデリゲートからモデルを設定すると、次のようになります。
ドロップダウン リスト内のアイテムに対してのみ機能しますが、リストを閉じた状態で表示されるデフォルトのアイテムに対しては機能しません (整数 346868604928 は MAC アドレス 00:50:C2:FA:E0:00 に対応することに注意してください)。
なぜそれが起こっているのですか?モデルが編集可能かどうかは知っていますが、デフォルト値はQLineEditに表示されるべきですが、そうではないので、閉じたQComboBoxウィジェットのQItemDelegateをどのように設定すればよいでしょうか?
pyqt - closeEditor は 2 つの引数のみを受け入れます (2 つ指定)
次のエラーが発生する理由を誰かが知っていますか:
QStyledItemDelegate を使用しているので、独自の QLineEdit を使用してテーブル (QTableWidget()) をより細かく制御できます。カスタム エディターで制御されているテーブル セルのフォーカスを離れると、エラーが発生します。
以下のコードは、PySide の stardelegate.py の例に基づいています。