問題タブ [qtgui]
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++ - Qt 5.1 で共有 QGLWidgets を使用したスレッド化された OpenGL の問題
2 つの QGLWidget を使用します。1 つはテクスチャの読み込み用、もう 1 つはレンダリング用ですが、機能していません。
http://blog.qt.digia.com/blog/2011/06/03/threaded-opengl-in-4-8/から次の説明を使用しました
テクスチャのアップロード スレッド 多くの (または大きな) テクスチャのアップロードは、GPU に大量のデータがプッシュされるため、通常は負荷の高い操作です。繰り返しますが、これはメイン スレッドを不必要にブロックする操作の 1 つです。4.8 では、共有 QGLWidget のペアを作成することで、この問題を解決できます。ウィジェットの 1 つが別のスレッドで現在の状態になりますが、画面に表示されることはありません。メイン スレッドは、アップロードする画像をアップロード スレッドに通知します。アップロード スレッドは、これらの各画像に対して bindTexture() を呼び出すだけで、各画像が終了するとメイン スレッドに通知し、画面に描画できるようにします。
Qt 4.8 と MinGW では正常に動作しますが、現在は Qt 5.1 と MSVC を使用しています。スレッド内のウィジェットを最新にしたいときにエラーが発生します。
別のスレッドで QOpenGLContext を最新にすることはできません
エラーは理解できますが、どうすれば修正できますか。ウィジェットを現在に設定しないと、テクスチャをロードできません (bindTexture() 関数でフリーズします)。また、なぜ私の古い QT バージョンで動作するのか疑問に思っています。エラーが表示されたら、「エラーを無視する」を押すと、プログラムはとにかくテクスチャをロードします。
サンプルコードは次のとおりです。
テクスチャを読み込んでいます:
...
...
編集:
myTextureWidget のコンテキストをスレッドに移動すると動作しますが、GUI がビルドされるときに API から makeCurrent エラーが発生します (スタック トレースは QT5Widgetsd の QLineEdit::setPlaceHolderText 関数で述べられています)。メインウィンドウが表示されてから数秒後に myTextureWidget をスレッドに移動すると、すべて正常に動作します。しかし、qt がすべての GUI 構築作業をいつ終了したかをどのように知ることができますか? QGLWidget ビューポートを使用して QGraphicsView に GUI を描画します。
c++ - カスタム クラスの QList で QAbstractTableModel 実装を使用する
の基になるデータ ソースの実装について一般的な質問がありQAbstractTableModel
ます。
このQAbstractTableModel::data()
関数は、行と列の値で構成されるインデックスによってデータ ソースのコンテンツにアクセスします。
基になるデータ ソースがQList
クラスPerson
であり、各メンバーが列を表す場合、特定の列インデックスを使用してそのメンバーにアクセスするにはどうすればよいですか?
Person
私が考えることができる唯一のアプローチは、列番号をクラスのメンバーにマップする一種のマッピングを使用することです。
これはこの問題に取り組むためのアプローチですか、それともより良いものがありますか? 私のクラスに 50 人のメンバーがいる場合、それは大変な作業になります。経由でソースにデータを書き込むときも、同じことを行う必要がありますQAbstractTableModel::setData()
。
Qtでのモデル/ビュー実装のこの部分を理解するのに役立つ資料への回答またはリンクは非常に高く評価されています.
qt - QComboBox と QPushButtons
プッシュ ボタンと QLabel を含む複数の列を持つ qt コンボ ボックスを作成したいと思います。QSpinBox エディターの例を見ると、エディターは 1 つの QSpinBox コントロールに対してのみ設定されています。このような複雑なコントロールを作成してイベントを処理できますか?
指針はありますか?
qt - QTableViewのプッシュボタン
QTableView に QPushButtons を追加したいと思います。Qtでこれを行うにはどうすればよいですか? QItemDelegate を使用する場合、ボタンを保持する列を指定することは可能ですか?