問題タブ [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.
c++ - QTableWidget - コンボボックス デリゲート セルごとに異なるオプションを許可する方法
アロハ
現在 ComboboxDelegate (QItemDelegate のサブクラス) を使用してユーザーにオプションを提示している 2 つの列を持つ QTableWidget があります。現在の行のみで、最初の列の選択が 2 番目の列で使用可能なオプションに影響するようにしたいと思います。
たとえば、最初の列に車のリストがあり、2 番目の列にその車で利用できる色のリストがあります。他の行では、さまざまな車が選択されているため、さまざまな色の選択肢が利用可能です。
私が見る限り、行または列ごとに項目デリゲートしか設定できないため、他のすべての行に影響を与えずに 2 番目の列のデリゲートのオプションを変更する方法がわかりません。
これは可能ですか?この QTableWidget を既に見ているコードがかなりあるので、完全なビュー/モデルの分離を避けたいと思います (そして、時間のプレッシャーにさらされています)。
c++ - Qt5 C++: 特定のテーブル列にスピンボックス デリゲートを設定する
テーブルの特定の列にスピンボックス アイテム デリゲートを追加しようとしています。Qt の例を調べた後、そのコードのほとんどをコピーして実装しましたがsetItemDelegateForColumn()
、アプリケーションを呼び出すとクラッシュします。列インデックスは有効です。私が間違ったことをしたアイデアはありますか?
主な呼び出し方法:
カスタム スピンボックスの実装:
qt - 1 つの QTableView セルに画像を含むハイパーリンク
カスタムモデルとデリゲートを持つ QTableView があります。タスクは、画像とハイパーリンクを含むセルを作成することです。画像をクリックすると、ユーザーはハイパーリンクをクリップボードにコピーし、ハイパーリンクをクリックすると、ブラウザーでリンクを開く必要があります。
それは可能なタスクですか?
qt - QItemDelegate のエディターの高さ
QItemDelegateのカスタム実装を備えたQListViewがあります。MyItemDelegate は createEditor() を再実装して、カスタム ウィジェットを表示します。ウィジェットのサイズはコンテンツによって異なります。デフォルトでは、各行の高さは約 20px (1 行) ですが、エディターの高さはそれより大きくなっています。QItemDelegate::sizeHint() メソッドをオーバーライドしようとしましたが、エディターへの参照が含まれていないため、正しいサイズを計算できませんでした。
QListView で行のサイズをエディターの実際のサイズに変更するにはどうすればよいですか?
xml - ベスト プラクティス: ネストされたウィジェットの QDataWidgetMapper、またはデリゲートで QAbstractItemView を拡張する
私のデータは XML ファイルから読み込まれ、確かに階層化されています。Qt のモデル/ビュー フレームワークで動作するようにデータを適応させることは、簡単なことのようです。ただし、XML ノードは数値や文字列などのプリミティブ オブジェクトではありません。Simple Widget Mapper exampleと同様のデータを表示するのが好きです。いくつかのラベル、テキスト フィールド、ボタン、またはチェック ボックスを含むフォームがあります。さらに、階層ビュー内の項目を選択 (チェック ボックスのチェックなど)、削除 (閉じるボタン)、編集 (編集ボタン)、ドラッグ アンド ドロップすることができます。ドラッグ アンド ドロップを使用して、階層を操作 (挿入、移動、コピー) します。ベストプラクティスは何ですか?
これまでのところ、次の 3 つのオプションが表示されます。
ネストされたウィジェットで QDataWidgetMapper を使用します。
XML ノードの属性は、1 行にリストされます。ノードごとに、QDataWidgetMapper がその行に関連付けられています。QDataWidgetMapper は、ウィジェット フィールドを適切なノード値と同期します。すべてのイベント、ドラッグ アンド ドロップ、選択などは、ウィジェットで処理する必要があります。ウィジェットはドロップ コンテナーを提供します。ネストされたウィジェットは、データ階層を表します。
カスタム QAbstractItemView を実装し、デリゲートを使用します。
ナッシ・シュナイダーマン図のようなものを目指しています。したがって、標準の QTreeView は適用できません。ただし、QAbstractItemView を継承する基本的な階層レイアウトを作成することは可能です。カスタム デリゲートを使用して、フォーム ウィジェットで XML データを描画し、エディターを作成します。QAbstractItemView は、ドラッグ、ドロップ、選択モデルの管理、(どういうわけか) ボタン イベントをリッスンして階層からアイテムを削除し、デリゲートにエディターを要求する役割を果たします。
他の何か:
私は Qt の第一人者ではありません。提案を歓迎します。
どのオプションが推奨されますか? 痛みが少ないと思うオプションはどれですか?
編集 - 2 月 21 日: Qt Designer がどのように実装されているか知っている人はいますか? これはかなり、私が探しているものです。Qt Designer と同様に、要素 (ループ、条件、アクションなど) があり、階層プロセスを編集するのが好きです。一部の要素はコンテナであり、その他はリーフです。いくつかの要素は水平に構成され、他の要素は垂直に構成されています。Qt Designer は QGraphicsScene ですか?
あなたの助けと提案に感謝します, マリアン
c++ - QItemDelegate の再実装したペイント機能で、setFont が機能しない
paint()
の関数を再実装QTreeWidget
しました。2 列目のデータを太字で表示したいのですが、うまくいきません。
どうすれば修正できますか?
問題のスクリーンショットを添付しました。後半は太字にする必要があります
c++ - デリゲート QtComboBox がクリックを検出できるようにします
私はQtが初めてです。2 番目の列としてデリゲート コンボ ボックスを含むテーブルがあります。コンボボックスのクリックを検出したかった。
私は1つのアプローチを考えました:コンボボックスをプライベート変数としてComboBoxDelegate
追加し、パブリックスロットを次のように追加します
ただし、createEditor は const であるため、このメソッドで変数 cb を再割り当てすることはできません。これを行う別の方法はありますか?