問題タブ [model-view]

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

qt - ダイアログを介してQtツリーノードを編集するには?

Qt でツリーを作成し、ツリー内のノードをダブルクリックすると、ダイアログが表示され、編集して [OK] をクリックします。ノード上の変更された表示 (ロール) 名など、ツリーは自動的に変更を表示しますか? または、それを行うには「再描画」メソッドが必要ですか? そして、フラグを設定する方法は?(F2) 名前の変更以外のダイアログで編集したので、編集できませんか? どうもありがとう。

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

qt - ItemDataRole プロパティに基づく Qt モデル/ビュー項目のスタイリング

私はQTreeView自分のモデル(QAbstractItemModel派生)のアイテムを持っています。QTreeViewここで、さまざまなプロパティに応じてさまざまな背景を持つように、アイテムのスタイルを設定したいと思います (上のスタイルシートを使用)。

また、この問題はどのモデル/ビュー コンテナにも当てはまるようです。だけではありませんQTreeView


たとえば、別の背景を行うのは簡単です。alternatingRowColors上にあるQTreeView必要がありますtrue。次に、スタイルシートで:alternate疑似セレクターを使用して、代替アイテムのプロパティを変更できます。


選択した項目を実行するのも同様に簡単です。実際、Qt の擬似セレクターによって処理されることはすべて簡単です。

しかし、疑似セレクターではないプロパティはどうでしょうか? 特に、関連付けられた値に基づいてスタイルを選択するItemDataRole方法 (モデルにデータを格納するための合理的に一般的な方法はどの継ぎ目か)?

コツがあるので注意。たとえば、チェックされた状態を使用しない場合は、その状態を「再利用」して独自のものにマップし、そのための疑似セレクターを使用できます...しかし、これは単なる回避策であり、一般的な回避策でもありません。


必要なものを追加するアイテムQTreeWidget専用の派生クラスを持つことで行くことができるようです。次に、スタイルシートでそのプロパティに名前でアクセスできます。QWidgetQ_PROPERTY

たとえば、Qt Center の「スタイルシートでカスタム Q_PROPERTY を使用する」の質問「動的プロパティの使用中にウィジェットの更新をトリガーする」を参照してください。Qt Style Sheets Examples の最後にある注記

しかし、*Viewクラスには、そのアイテム (または少なくともパブリックにアクセス可能なアイテム) のQWidgets または s さえありません。QObject


独自のQAbstractItemDelegate、おそらく から派生したものを提供する可能性もありQStyledItemDelegateます。ただし、これにより、スタイルシートの操作が少し難しくなります。

background-colorプロパティのようなシンプルなスタッフで、それは実行可能のようです。しかし、複雑なセットで や他の多くのスタイルをどのようにシミュレートborder-imageしますか?padding

アイテム デリゲートを記述すると、コードが凍結されることは言うまでもありません。スタイルシートのレンダリング方法を変更した場合Qt(何らかの方法で改善した場合)、その恩恵を受けることはできません... また、ロジックとプレゼンテーションの分離が少し難しくなります。CSS 対応のグラフィック担当者だけでなく、これらのアイテムのスタイルを設定するプログラマーが必要です...


モデル提供のプロパティ/データに基づいてスタイルシートでサブクラス化する方法はありますか?

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

c++ - 0 を返す gluUnproject は、モデルビュー マトリックスに関連しているようです

私は 2D 画像ビューアーに取り組んでいます。テクスチャ上の openGL マウスの位置を取得したいのですが、モデルビュー マトリックスで glTranslatef() または glScalef() 呼び出しが行われると機能しません。有名な Qt ライブラリの QGLWidget を使用しています。

重要な呼び出しは次のとおりです。 Resize 関数:

表示機能:

...後でpaintGLで:

ここで、openGL 座標を取得する関数を次に示します。

}

これまでのところ、私が気づいたことは次のとおりです。このようなコードは常に (0,0) を返し、gluUnproject から GLU_FALSE が返されます。モデルビュー行列が原因である可能性があることをフォーラムのどこかで読んだので、代わりに恒等行列を入れましたが、そうすると、ウィンドウ内のマウスの座標が正確に得られます...

以前は、正投影を使用してズームを処理しましたが、完全に機能させることができなかったため、簡単にするために、openGL の位置を取得し、代わりに glTranslatef/glScalef を使用することにしました。

paintGL関数のすべての変換/スケーリングを削除すると、すべてが機能します...しかし、ズームは機能しません:x)

gluUnProject ソリューションを使用して、このいまいましいズーム機能を機能させるためにあなたの助けを求めています;)

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

c++ - 別のズームツーポイントの問題

画像ビューアーである 2D アプリケーションがあります。ウィンドウ内の画像をパンする機能があり、基本的なズームがあります。ここで、マウスの下のポイントにズームするようにズームを改善したいと思います。これまでのところ、私はグーグルで可能な限りすべてを読んでおり、何かが機能することに近づいていますが、まだ機能しているものを見つけることができません。ここに私が得たものがあります:

ほとんど機能しますが、問題はありません。要求されたポイントに正確にズームしません。また、画像が小さく、ビューアーに完全に収まらない場合 (周りに黒い部分がある)、面倒で機能しません。 ..

ところで、マウス ホイール イベント ハンドラでユーザーがズームインしたときのコードは次のとおりです。

openGLpos 関数は次のとおりです。

誰でもこれを手伝ってもらえますか?

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

qt - QWidget をビュー アイテムとして (Qt モデル ビュー コントローラー)

だから私が欲しいのは、選択可能なウィジェットを表示するqlistviewです(ボタンの画像とテキストを表示するラベル(ウィジェットはaとaの水平レイアウトを持つqwidgetベースのウィジェットですQLabelQPushButton)。モデルは、各アイテムの画像パスとボタン テキストを保存する必要があります (これは問題ではないようです)。QListView 派生ウィジェットを正常に作成しましたが、最初のリスト項目 (カスタム ウィジェット) しか表示されず、選択できません。カスタム モデル、ビュー、およびデリゲートを作成しましたが、最初だけでなく、すべてのリスト アイテムにウィジェットを表示する方法がわかりません。完全なソースコードのリンクは次のとおりです: SOURCE CODE LINK

5 つのウィジェット アイテムのリストと 1 つのウィジェット アイテムのリストを別々にアプリケーションを実行しました。そして、ウィジェットを追加すると思いますが、最初のウィジェットでそれらすべてが重なっています(5つのアイテムのビルドでは、ボタンに濃い影があります):

リストにある 5 つのウィジェット: ループで定義された 5 つのウィジェット アイテムを使用してコンパイルおよび実行されたウィジェット

リスト内の 1 つのウィジェット: ループで定義された 1 つのウィジェット アイテムを使用してコンパイルおよび実行されたウィジェット

ご覧のとおり、影に違いがあります。

コードの別のコピーを次に示します。

Delegate.h のコードは次のdelegateとおりです。

デリゲート.cpp

Model.h

モデル.cpp

リスト ビューを含む Prefs.h ウィジェット:

Prefs.cpp

リスト項目として使用する必要がある Profile.h ウィジェット

プロファイル.cpp

View.h

View.cpp

すべてのリスト項目に必要なウィジェットを入力するのを手伝ってくれる人、または私が間違っていることやヒントを教えてくれる人はいますか? Qt でこの MVC スタイルのリスト/テーブル項目としてウィジェットを持つことは可能ですか? これを達成するための参照はどこにも見つかりませんでした。Qtを使用したC++ GUIプログラミング、高度なQtプログラミング、Qt 4を使用したC++のデザインパターンの紹介、およびインターネット上のいくつかの場所で検索しましたQAbstractItemView::setIndexWidgetが、ウィジェットをリストとして追加する方法であると思われる関連するものは見つかりませんでしたアイテムの表示。

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

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

qt - Qtでモデルをリセットするには?

Qt モデル/ビュー フレームワークを使用しています。モデルのデータをリセットするときは、ビューも更新できるようにモデルをリセットする必要があります。どうやってするの?QAbstractItemModel でシグナルを見つけましたmodelReset(QPrivateSignal);。これで解決できますか? 信号を発信するには?ありがとう。

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

qt - Qtでサブツリーアイテムを表示するには?

Qt が提供する単純なツリーの例のように、Qt のモデル ビュー フレームワークを使用してツリー構造を表すと、ツリー ビューは root-tree-item を表示します。ルートの子アイテムなど、サブツリーアイテムを表示する方法はありますか?

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

qt - QDataWidgetMapperでQCalendarWidgetを使用する方法は?

現在、カレンダーウィジェットを次のようにQDataWidgetMapperを使用してマッピングしています(PySideを使用)。

そして、私がするとき、それは正しい日付を表示します:

しかし、私の問題は、選択した日付を変更したときに別の日付をクリックすると、マッピングが変更をキャプチャしてデータベースに保存しないことです。つまり、デリゲートを使用することを選択した場合、マッパーはモデルまたはsetModelDataに対してsetDataを発行しません。

私が欠けているものは何ですか?

編集:私は解決策を見つけました。私が上でしたことは正しかったが、マッパーはデータを自動送信していなかった。私がしたことは:

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

qt - QAbstractItemModelの行を置き換える方法は?

QAbstractItemModelでは、beginInsertRows、beginRemoveRowsなどの一部の関数を使用して、行を挿入および削除できます。しかし、行アイテムを別のアイテムに置き換える方法を実装するにはどうすればよいでしょうか。