問題タブ [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 に答える
3600 参照

qt - QStyledItemDelegate を正しく実装する

QTreeWidget を含むクラス (EditorTagManager) があります。実行時に、ツリーには任意の数のタグ項目を含めることができ、そのすべてがチェック可能です。これらのタグが無関係であり、互いに分離することを意図していることを明確にするために、QTreeWidgetItems の間に水平線を追加しようとしています (各項目はルートレベルのノードです)。

このテーマに関する調査から、QtreeWidgetItems の外観を意味のある範囲で制御する唯一の方法は、QStyledItemDelegate をサブクラス化し、デリゲートを QTreeWidget にバインドすることであることがわかりました。抽象的な概念なので、よくわかりません。これまで Qt オブジェクトをサブクラス化する必要がなかったので、正しく実行できているかどうかわかりません。

Qt のドキュメントではこれを行う方法が実際には説明されていないため、Clementine の設定ウィンドウは QTreeWidget で同様のセパレーターを使用するため、Clementine 1.0.1 ソース コードの settingsdialog.cpp/.h ファイルをガイド/リファレンスとして使用しました。私はクレメンタインのコードから自分のソリューションをリバースエンジニアリングしようとしています.唯一の問題は、クレメンタインの実装が私が必要としないことを行うことです. それが、私がこの時点に到達した理由です。私のコードは Clementine のコードと非常によく似ています (デリゲート クラス名を変更しただけです)。

これが、editortreemanager.h の現在のデリゲート ヘッダー宣言です。

これが、editortreemanager.cpp の現在のデリゲート ソースです。

TagListDelegate::paint() は実際にはまだ何も実行していませんが、QTreeWidgetItems の外観を変更する前に、このコードを正しく動作させたいだけです。私の目標は、今のところこれをできるだけシンプルに保つことです。

QTreeWidget (ui->AvailableTags) にデリゲートを使用するように指示するまで、すべてが正常にコンパイルされました。

コンパイラエラーは次のとおりです。

/home/will/qt_projects/robojournal/ui/editortagmanager.cpp:211: エラー: 'QTreeWidget::setItemDelegate(TagListDelegate*)' の呼び出しに一致する関数がありません

私はここで少し頭を抱えているので、これを理解するのに助けていただければ幸いです。

更新 (2013 年 7 月 30 日):

私の Delegate クラスは次のようになります。

ソース:

ヘッダー宣言:

更新 (2013 年 7 月 31 日)

これが私のクラスの外観です。

ヘッダ:

ソース:

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

c++ - Qt5 C++: 特定のテーブル列にスピンボックス デリゲートを設定する

テーブルの特定の列にスピンボックス アイテム デリゲートを追加しようとしています。Qt の例を調べた後、そのコードのほとんどをコピーして実装しましたがsetItemDelegateForColumn()、アプリケーションを呼び出すとクラッシュします。列インデックスは有効です。私が間違ったことをしたアイデアはありますか?

主な呼び出し方法:

カスタム スピンボックスの実装:

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

qt - QItemDelegate のエディターの高さ

QItemDelegateのカスタム実装を備えたQListViewがあります。MyItemDelegate は createEditor() を再実装して、カスタム ウィジェットを表示します。ウィジェットのサイズはコンテンツによって異なります。デフォルトでは、各行の高さは約 20px (1 行) ですが、エディターの高さはそれより大きくなっています。QItemDelegate::sizeHint() メソッドをオーバーライドしようとしましたが、エディターへの参照が含まれていないため、正しいサイズを計算できませんでした。

QListView で行のサイズをエディターの実際のサイズに変更するにはどうすればよいですか?

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

qt - QTreeWidget ヘッダーのデリゲートを設定する

ヘッダーのデリゲートを設定するQTreeWidgetか、他の方法で HTML タグを操作する必要があります。

QTreeWidgetを使用してアイテムのデリゲートを設定しました

そしてそれは動作します。

しかし、ヘッダーへのデリゲートの設定は機能しません: