3

ペイントプログラム(マウスの長押しが検出された場所でペイント)を作成しようとしていますが、QtQPainterの使用に問題があります。私は彼らのウェブサイトのドキュメントを読みましたが、私はまだちょっと迷っています。彼らのウェブサイトにないチュートリアルへのリンクはいいでしょう、あるいは私がQtでこれを達成する方法を私に説明するかもしれません。私が何とかできたのは、ウィジェットにドットをペイントすることだけです。

4

3 に答える 3

8

Qtに付属しているScribbleの例を確認してください。これは、まさにあなたが望むことを実行します。

マウスイベントハンドラーを再実装して描画を実装し、ペイントイベントハンドラーを再実装してアプリケーションを更新し、サイズ変更イベントハンドラーを再実装してアプリケーションの外観を最適化します。さらに、アプリケーションを終了する前にクローズイベントをインターセプトするようにクローズイベントハンドラーを再実装します。

この例では、QPainterを使用してリアルタイムで画像を描画する方法や、ウィジェットを再描画する方法も示しています。

于 2009-11-06T10:02:55.057 に答える
1

QtAssistantを使用して、QPainterのエントリを参照します。そこから、次のようなQPainterのさまざまな機能を使用したサンプルプログラムへのリンクが表示されます。http://doc.trolltech.com/4.5/painting-basicdrawing.html

QtAssistantはあなたの一番のリソースでなければなりません。それはかなり徹底的です。それでも問題が解決しない場合は、QtCentreのフォーラムをお勧めします。それらは何人かの知識のある人です。

于 2009-11-06T02:05:08.373 に答える
1

私はあなたの問題が何であるかを推測することしかできませんが、私はあなたがpaintEventがページを更新するために使用されるという事実の古くからの問題に遭遇していると思います。ペイントプログラムを実装する方法は、最初に描画バッファとしてQPixmapまたはQImageを作成することです。次に、マウスのプレス/移動/リリースメソッドでペイントします。描画バッファを更新すると、すべてが更新されます(そして、良い子になり、更新が必要な領域を示します)。これにより、paintEventメソッドの呼び出しがトリガーされ、要求された長方形(QPaintEvent :: rect())を画面にブリットするだけです。

于 2009-11-06T09:35:50.487 に答える