問題タブ [qitemdelegate]

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 投票する
2 に答える
1036 参照

qt - 問題をドラッグしながら QAbstractItemDelegate ペイント

QAbstractItemDelegate (独自の Item デリゲート クラス) で paint() 関数をオーバーロードしています。

ドラッグすると、セル全体の内容がペイントされますが、これは望ましくありません。ドラッグ中に特定の何かで paint() 関数が呼び出されると想定していますが、それが見つからないようです。

私が見つけることができた最も近いものは、所有するビュークラスの QState 変数です (アクセス関数 QTableView::state() は保護されています)関数を呼び出して、ドラッグしているかどうかを返します。デリゲート クラス内で、ドラッグしているかどうかを判断し、paint() 関数を変更できます。

これはほとんど機能します。

問題は、元のセルに変更されたペイント イメージが表示されることです。これは望ましくありません。元のセルのイメージをそのままにしておきたいのです。

例を精査して、これを行う何かがあるかどうかを確認する必要があると思います...

Qt ソースをクロールして、QItemDelegate::paint() 関数を呼び出してドラッグ ピックスマップを設定する場所を確認できますが、変更されるのは、項目オプション スタイルで QStyle::State_Selected を強制することだけです。アイテムはすでに選択されているので、それだけでは不十分です。

ドラッグ時にセルの内容を明示的に描画する方法を知る方法はありますか?

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

qt - QtでSymbianスタイルのリストビューを作成する方法

私はこれまでQtでアイテムのデリゲートを行ったことがなく、ドキュメントではより複雑なデリゲートについて十分に説明されていないと思います。

2つのスタイルのSymbian(^ 3)スタイルリストを作成する必要があります

タイプ1:

デリゲートスタイル1

これは一般的なナビゲーションリスト用であり、アイコンと下のラベルはオプションです。

タイプ2:

デリゲートスタイル2

これは設定リスト用で、プッシュボタンはトグル(オン/オフ)ボタンにすることも、コンテキストメニューを実行することもできます。

この種のアイテムデリゲートを作成するにはどうすればよいですか?

よろしく、ラット

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

combobox - コンボボックス付きQTa​​bleView

QTableView にコンボボックスの列を持たせたいです。何度も試した結果、コンボボックスを表示するという目標に到達しました。

今私の問題は、選択したアイテムが表示されたままにならないことです。

私はそれを行うためにカスタムデリゲートを使用します。以下は関連するコードです:

クラス ComboBoxDelegate(QtGui.QItemDelegate):

ご清聴ありがとうございました!

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

combobox - QTableView からのカスタムデリゲートのコンボボックスの選択項目

カスタム デリゲートを使用して、QTableView にコンボ ボックスの列を表示します。値はすべてのコンボボックスで同じであるため、実際に問題になるのは人口部分ではありません。

データベースから取得できる値を、選択したアイテムとして表示したいのです。デリゲートからデータベースにアクセスできますが、リクエストを送信するには、コンボ ボックスの行が必要です。

だから私の質問は次のとおりだと思います:テーブルのすべての行を反復処理して、カスタムデリゲート内から何らかのアクションを実行するにはどうすればよいですか?

ここで役立つ場合は、私のカスタム デリゲート クラスです。

そして、次のように QTableView から呼び出します。

ご清聴ありがとうございました。

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

pyqt - QTableViewの並べ替え時にカスタムデリゲートが従わない

カスタム デリゲートを使用して、QTableView にコンボ ボックスの列を表示しています。

デフォルトの選択の問題 (ここにリンクの説明を入力してください) に加えて、QTableView のデータを (列ごとに、またはフィルターを適用して) 並べ替えるときに問題が発生します。コンボボックスは、グリッドが表示されていないときの位置にとどまります。

デリゲートの再描画を強制する方法はありますか? ペイント メソッドのコードを (インデックスなしで) コピーする必要がありましたが、これによりプログラムがクラッシュするだけでした。

よくわからない場合はお知らせください。

これが私のカスタムデリゲートのコードです:

そして、私は QTableView クラスからそれを呼び出します:

(モデル クラスから) 列を並べ替えるときに updateDelegate 関数を呼び出します。

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

qt - QItemDelegateを使用したQListWidgetまたはQListView?

アイテムのリストを表示する必要があるとしましょう。各項目には、QPushButton、画像、およびいくつかのテキストが含まれています。ユーザーがボタンをクリックすると、何かが起こるはずです (つまり、シグナルを取得する必要があります)。Qtでこれを実装する正しい方法は何ですか?

少し読んだ後、QListWidget と QListWidgetItem を使用すれば、これを実現できることがわかりました。必要に応じて各 QListWidgetItem をサブクラス化し、リスト ウィジェットに設定できます。

ただし、より適切なアプローチ (モデル ビュー アプローチ) は、QItemDelegate と組み合わせて QlistView を使用することであるとも読みました。しかし、QItemDelegate を使用している場合、ウィジェットのみをペイントできるようです。プッシュボタンイベントを取得するにはどうすればよいですか?

この巨大な投稿で申し訳ありません。QListWidget/QListViewをいつ使用するかという概念全体について、私はちょっと混乱しています。

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

qt - QtQTableViewはアクティブセルの周囲に境界線を描画します

現在の選択範囲全体の周囲に境界線が描画されるQTableViewにExcelと同様の動作を実装しようとしています。私はこれを100通りの方法で試し、問題を抱え続けています。簡単に境界線を描くことができますが、選択が変わるたびに境界線の残骸が残ります。これが私がQTableView::paintEvent..で試した1つの例です。

そのコードは次のような結果を生成します

これをよりスムーズに実行する方法についての提案があればいいのですが。デリゲートでこれを実行しようとしましたが、デリゲートは選択されているすべてのインデックスを知る必要があり、QTableViewによって描画されたグリッド線上にペイントできません。さらに、私のテーブルクラスは、境界線が描画された場所を知る必要があります。

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

qt - QAbstractTableModelでのQItemDelegateの使用

QAbstractItemModelとQItemDelegateがあり、これが私の問題です。デリゲートは何もしません。そのサブルーチンが呼び出されていますが、何も起こりません。

これが私のテーブルに見たいものです。

テキスト:QComboBox:テキスト:テキスト:QProgressBar

ここで、:は列区切り記号です。

委任します。#ifndef DELEGATEACTION_H #define DELEGATEACTION_H

モデル。

私が知っている唯一の問題は、ModelAction :: setData()関数が不完全であるということです。そのサブルーチンを完了する前に、戻ってこのモデルが表示するデータクラスを編集する必要があります。それでも、コンボボックスとプログレスバーは表示されますが、何もしません。

この時点では、テーブルの各行のID番号とテストテキスト「bob」のみが表示されます。QComboBoxとQProgressBarはまったくレンダリングされません。

どんな助けでもありがたいです。

ジェック

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

python - QItemDelegate sizeHint()内でQTreeViewセル幅を取得するには?

QTreeView 内にカスタム QItemDelegate 描画テキストがあります。paint() では、スタイルからセルのサイズを取得します。次に、現在のセルの幅を使用して、wordwrap でテキストを描画します。

sizeHint() では、実際には高さだけを計算したいのです。幅は、現在のセルの幅と同じにする必要があります。ユーザーがセルの幅を変更すると、sizeHint はワードラップされたテキストの新しい高さを計算し、それを返します。

問題は、paint() のように sizeHint() 内でセル幅を取得できないことです。私が使用していた:

これは paint() では機能しますが、sizeHint() では -1 を返します。sizeHint() で現在のセル幅を取得するにはどうすればよいですか?

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

qt - カスタムペイントされたデリゲート内のクリック可能な要素または子ウィジェット

QListViewがあり、カスタムペイントを使用したカスタムデリゲートを使用してアイテムを表示します。各アイテム(つまり、各リスト行)内に、ユーザーがクリックしていくつかの関数を呼び出すことができるいくつかの「ハイパーリンク」を表示できるようにしたいと思います。

私はすでに公式ドキュメント(例:モデル/ビュープログラミング)とかなりのグーグルをチェックしようとしましたが、これを達成する方法を理解することができませんでした。

私には2つのアイデアがあり、それぞれに独自の問題があります。

  • フラットなQPushButtonのように、子ウィジェットを使用してそれらを描画できます。次に、これらのウィジェットを配置して表示するにはどうすればよいですか?
  • それらをテキスト文字列として描画することもできます。次に、クリック可能にするにはどうすればよいですか?または、親QListViewでクリックイベントをキャプチャし、それらから座標を決定することはできますか?次に、これらのクリック可能な要素に座標を一致させ、それに応じて行動することができます。

私の最初のアプローチは、.setItemWidget()でQListWidgetを使用することでした。ここでは、レイアウトと子ウィジェットを備えた適切なウィジェットがありました。残念ながら、私のリストが数百または数千のアイテムに増えたとき、これは遅すぎました。そのため、デリゲートを使用してQListViewに変更しました。