위젯 내에서 QRect 또는 QPoint의 좌표를 가져 와서 해당 객체가 가장자리와 겹치고 위젯 외부로 그려지는지 확인하려고합니다.Qt - translate() 후 위젯 내 직사각형 위치 가져 오기
다음 프로그램은 내 문제를 보여주기위한 테스트 프로그램 일뿐입니다. 창에 검은 색 직사각형이 그려집니다. QPainter의 translate()를 사용하여 좌표계를 이동합니다. 그 후 직사각형의 정확한 좌표를 얻을 수 없습니다.
모든 좌표계 조작 (translate(), rotate(), scale())을 추적 할 수 있지만 좋은 해결책은 아닙니다. 위젯의 왼쪽 위 모서리를 기준으로 사각형의 위치를 얻는 더 쉬운 방법이 있습니까? 내가하고 싶으 woul 무엇
#include "widget.h"
#include <QPainter>
#include <iostream>
Widget::Widget(QWidget *parent)
: QWidget(parent)
{
}
void Widget::paintEvent(QPaintEvent *)
{
QPainter painter(this);
painter.translate(width()/2, height()/2);
QRect rectangle(100, 50, 200, 100);
std::cout << "width(): " << this->width() << "\theight(): " << this->height()
<< "\trecLeft X: " << rectangle.x() << "\trecTop Y: " << rectangle.y()
<< std::endl;
//Output: width(): 960 height(): 432 recLeft X: 100 recTop Y: 50
}
은 다음과 같습니다
recLeft X: 580(width()/2+100) recTop Y: 266(height()/2+50)
그래도 화가의 변환이 사각형 좌표에 영향을 줍니까? – vahancho