問題タブ [paintevent]
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のウィジェットに円を追加する方法は?
私は QPainter について学んでおり、ユーザーがウィジェットをクリックするたびにその時点で新しい円が表示される単純なウィジェットを作成しました。

しかし、Qt は paintEvent の外でのペイントを許可していないため、新しい円を描画するたびに、ウィジェット領域を無効にし、以前のすべての円も再描画する必要があります。これはあまり効率的ではないようです。要素が数百または数千ある場合はどうなるでしょうか。
以前の円を消さずに、ウィジェットの上に新しい円を描いただけでよかったのに。しかし、Qt では、最初に前のコンテンツを無効化 (したがって消去) しないと描画できません。
Qtでこの状況を処理するための推奨される方法は何ですか?
qt4 - QpaintEventで背景が繰り返されないようにする方法
paintEventがあり、何かをペイントするたびに背景を追加しています。問題は、画像の繰り返しを停止する必要があることです。
たとえば、背景画像が20ピクセルx 20ピクセルで、ペイント領域が40ピクセルx 40ピクセルの場合、背景は4つの画像であり、必要なのは1つだけです。
これが私のコードです。
助けてくれてありがとう!
qt - Qt ImageViewer の例での描画
私は Qt を初めて使用し、qt が提供するサンプル プロジェクトの 1 つ「イメージ ビューアー」に基づいてアプリの開発を開始しました。
サンプル プロジェクト自体は次のとおりです: http://doc.qt.io/qt-4.8/qt-widgets-imageviewer-example.html
プロジェクトの機能を拡張するために間違ったことをしていないことを確認するために、新しいプロジェクトを作成し、サンプル プロジェクトからファイルをコピーしました ( 「イメージ ビューアーの例」ページの上部にある「ファイル」セクションを参照してください) 。
次に、imageviewer.hファイルを編集しました。
追加した
と
ImageViewer クラスに。
次に、 imageviewe.cppでpaintEventを定義しました。
左上隅に線を引くと思っていましたが、そうではありませんでした。
ポイントは、scrollAreaが行に重なって「見えなくなる」ことだと私には思えます。だから、私は行をコメントアウトしました
ImageViewer::ImageViewer()定義内。
行は表示されましたが、画像は表示されませんでした。
次に、 paintEventコードを変更して、 scrollArea自体に描画を試みました。
その結果、次のようなメッセージが表示されました
QPainter::begin: ペイント デバイスから返されたエンジン == 0、タイプ: 1
それをグーグルで試してみましたが、解決策はスクロールエリアが行に重なることとは何の関係もありません(または単に機能しません)。
これについて何か助けていただければ幸いです。
c++ - qtc++でpainteventを使用するループ内でスリープします
基本的に私がやりたいのは、リスト内の番号ごとに長方形を描くことです。数値が大きいほど、長方形は大きくなります。私の問題は、実際にそれを段階的に実行し、すべての描画の間に数秒待つことです。私はいくつかの解決策を探しましたが、この特定のケースでそれらを機能させることができません。fflushを使用して、バッファー内にあるものをすべて解放できることを確認しましたが、これにどのように使用できるかわかりません。
どんな助けでも本当にありがたいです。
c++ - サブクラス化された QComboBox の paintEvent() の記述方法
カスタマイズするために QComboBox をサブクラス化しました。カスタマイズを開始する前に、スタイル シートが適切に適用されているかどうかをテストするために、次の paintEvent() メソッドを作成しました。ただし、このpaintEventを使用すると、選択したアイテムが表示されません(すでに選択されているアイテム、または新しく選択したアイテム)。
paintEvent を修正するにはどうすればよいですか? また、さまざまな Qt コントロールの paintEvent に関するドキュメントはありますか?
c++ - QPainterがpaintEvent内での動作を拒否するのはなぜですか?
私は持っています:
それは与える:
なぜそうなるのでしょうか?
アップデート
qt - paintEventで生成されたコンテンツの後にサイズを変更する
どのウィジェットも、paintEventのメソッド生成コンテンツディメンションに自動的にサイズ変更するにはどうすればよいですか?
c# - ユーザーコマンドで複数の画像を表示するには?
ユーザーが GUI のメニューを押した後、画像のグループを表示できるようにする必要があります。次のコードを使用しようとしています。
これでうまくいくと思いますが、エラーが発生します:
'System.EventArgs' には 'Graphics' の定義が含まれておらず、タイプ 'System.EventArgs' の最初の引数を受け入れる拡張メソッド 'Graphics' が見つかりませんでした (using ディレクティブまたはアセンブリ参照がありませんか?)
EventHandler を PaintEventHandler に置き換えようとしましたが、ここでエラーが発生します。
述べる:
「imagePalleteToolStripMenuItem_Click」のオーバーロードがデリゲート「System.EventHandler」に一致しません
また、その行を次のように変更してみました。
しかし、これも次のエラーが表示されます。
タイプ 'System.Windows.Forms.PaintEventHandler' を 'System.EventHandler'r に暗黙的に変換することはできません
*注: * 私の全体的な目標は、すべての画像をサムネイル形式で表示するダイアログを呼び出すことです。したがって、これが正しい方法でない場合は、リダイレクトしてください
wpf - WPF での Windows フォーム ペイントと同等のイベント
PAINT イベントを使用して、Winows フォーム アプリケーションのパネルに波を描画しました。しかし、WPF を使用すると、Paint Event を持つ Panel に相当する要素が見つかりませんでした。グーグルもたくさん使ったが、あまり役に立たなかった。
さて、私はWPFで波形を描く必要があるので、PaintArgsEventに関する適切な解決策または新しい解決策を完全に提案してください。
ありがとう!
qt - QtでPaintEvent()を使用してQComboboxの現在のアイテムを変更する方法
アイテム1、アイテム2、アイテム3の3つのアイテムがあるコンボボックスがあります。これらの3つのアイテムを.uiファイルに追加し、リソースファイルを使用してすべての画像を追加しました。これで、アプリケーションを実行すると、コンボボックスの最初のアイテムが左側の画像とともに表示されます。ドロップダウンをクリックすると、すべてのアイテムと画像が表示されます。
基本的にやりたいのは、コンボボックスに画像を表示することです。ユーザーがドロップダウンをクリックすると、画像とテキストも表示されます。
シナリオ:コンボボックス内のアイテムと画像は次のように追加されます。
アプリを実行すると、コンボボックスに次のように表示されます。
Image1
デフォルトでは最初のアイテムが表示されるため。現在の選択範囲をペイントするときに実行できると思います。QComboboxは再埋め込みを使用します。void MyCombo::paintEvent(QPaintEvent *e)これは私が気付いていないことです。
誰かがこれで私を助けることができますか?:)
どうすればそれを達成できますか?