문제

를 만들고 싶은데 때 이벤트 버튼을 누르면 프로그램이 그릴 수 있도록 무료로 손 라인을 사용하여 마우스 포인터이다.현재 저는 단계를 보여줄 수 있습니다 앨범에서 사진의 탭을 창입니다.할 수 있는 사람이 도움을 제공하여 일부 지침은 또한 단서???

도움이 되었습니까?

해결책

마우스 이동으로 페인트하는 방법의 예는 다음과 같습니다.

http://qt-project.org/doc/qt-4.8 / widgets-scribble.html

다른 팁

당신의 질문은 매우 넓은 것입니다.나는 조언한 연구를 하고 있으 당신이 원하는 무엇을 달성하기 위해 어쩌면을 보고 다른 사람들이 어떻게 해결했는 동일한 문제입니다.당신이장 그래서 그것을 사용하여 더 많은 자원으로 특정 질문에 대답.

는 말했다,여기에 몇 가지 당신이 볼 수있:

QGraphicsScene:표면을 포함할 수 있는 큰 숫자의 2D 그래픽 객체(i.e라인은 당신을 허용하는 사용자를 그립)

QGraphicsSceneMouseEvent:이벤트 당신이 잡을 필요가 및 핸들을 얻기 위해서 입력에서 마우스를 장면을 연출할 수 있습니다.이벤트를 처리할 수 있습 중 하나에 의해 만들의 서브 클래스 QGraphicsScene 고 reimplenting QGraphicsScene::mouseMoveEvent, 나 설치 eventFilter 에 대한 장면을 연출할 수 있습니다.

를 표시하는 경우 그림을 사용하여 간단한 문제에 대한(하지만 무언가 복잡 다음과 같 QGraphicsScene),그냥 다시 구현 QWidget::mouseMoveEvent(QMouseEvent *e).사용자가 누르면 마우스 단추(e->buttons() != 0 에)당신이 할 수 있는 내 그림 그림입니다.

가정하자 당신은 당신의 사진에서 회원이 QImage img 추적 이전에서 커서의 위치를 QPoint cursorLast.자한다고 가정해 표시되는 그림 같은 것을 사용하는 QLabel 할 수있는,단지에 제공합니다.를 할 수 있는 다음 그림은 다음과 같다:

void MyWidget::mouseMoveEvent(QMouseEvent *e) {
    if(e->buttons()) {
        if(!cursorLast.isNull()) {
            QPainter p(&img); // and set pen
            p.drawLine(cursorLast, e->pos());
            p.end();
            setImage(img); // update image in your view
        }
        cursorLast = e->pos();
    }
}

는 것을 잊지 않을 다시 설정 cursorLast 회원 마우스시:

void MyWidget::mouseReleaseEvent(QMouseEvent *e) {
    cursorLast = QPoint(); // reset
}

이 코드는지 테스트와 사용 할 수 있습니다 약간 잘못된 이름에 방법이지만,그것을 쉽게 찾을 수 있습니다 실제 사람.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top