2011-11-14 7 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 event. AnalogClock example은 사용자 정의 페인팅의 모든 단계를 자세히 설명합니다.

관련 문제