2011-11-14 15 views
0

私はQtが新しく、何も複雑ではありません。私が必要とするのは、ある種の矩形を宣言し、それをクリックして描画することができることだけです。Qtクリックキャンバス

私が見つけたチュートリアルの中には、オブジェクトをクリックするためのものは何もありません(マウスの左ボタンと右ボタンを区別し、クリックやそれ以降の移動の座標を取得したいと思います)。

ペイントのチュートリアルでは、ウィンドウやダイアログに直接ペイントする方法を示しますが、コントロールに役立つボタンがいくつか配置されています。

ドローイング部分が問題ではないと思いますが、それ以上のクリック部分です。新しいQWidgetを作成する必要はありますか?それは難しいですか?

答えて

2

カスタム描画を行う方法はいくつかあります。私は、低レベルにほぼハイレベルから取り寄せましょう:

  1. 使用はQtクイック/ QML/QDeclarative。 QMLでは、Javascriptを使用することができ、標準のQt APIへのアクセスを提供します。あなたのニーズがシンプルな、基本的な直線などなら、これはあなたのアプリを書く本当に簡単な方法かもしれません。 QML Examples.
  2. QGraphicsSceneとQGraphicsViewを参照してください。これを使用するには、モデルとビューを理解する必要がありますが、これはあなたに何かを描画するために必要なすべてのアーキテクチャとサポートを提供します。 Graphics View examplesを参照してください。
  3. サブクラスQWidgetと描画とマウスの操作を自分で実装します。このかなり低いレベルのアプローチは、あなたのニーズがきわめて基本的であれば、本当に簡単かもしれません。このアプローチでは、すべてを制御し、最終的に画面上に描かれているものに座標を変換する必要があります。 Tetrix exampleは良い出発点かもしれません。

    virtual void mouseMoveEvent (QMouseEvent * event) 
    virtual void mousePressEvent (QMouseEvent * event) 
    virtual void mouseReleaseEvent (QMouseEvent * event) 
    

    あなたはまた、オーバーライドすることにより、カスタムペイントを実装する必要があります:最後のアプローチで

、あなたはマウスイベントへのアクセスを得るために右仮想メソッドを実装する必要がありますpaint eventAnalogClock exampleは、カスタムペインティングのすべてのステップについて詳しく説明します。