작은 프로그램을 작성 중이며 여러 개의 패널이 있습니다. 나는 그것이 패널에 집중할 때, 그것이 집중되어 있음을 보여주기 위해 얇은 인라인을 그린다. 내 트리보기를 제외한 모든 패널에서 작업 할 수 있습니다.QPainter를 사용하여 QTreeWidget에 그리기
void Test::paintEvent(QPaintEvent *event)
{
if(hasFocus())
{
QPainter painter(this);
QPen pen(Qt::blue);
pen.setWidth(1);
painter.setPen(pen);
painter.drawRect(geometry());
}
QWidget::paintEvent(event);
}
내가 콘솔에서 이러한 디버그 메시지를 얻을 QTreeWidget
에 QPainter
을 사용합니다 :
QWidget::paintEngine
: 더 이상 호출되지해야 다음 는QWidget
와 함께 작동하는 예제QPainter::begin
: 장치 반환 장치 == 0, 유형 : 1QPainter::setPen
: 화가 활성화되지QPainter::drawRects
: 화가가 활성화되지는
그래서 내 문제는 내가 내 윤곽을 그릴 수없는 나는 내가 QTreeWidget
로 QPainter
를 사용할 수 있다는 것입니다. 사용할 수있는 대체 방법이 있습니까?
가 왜'QTreeWidget'에'paintEvent'를 사용하지? 'QTreeWidget :: paintEvent (event)'를 호출하여 수퍼 클래스 – msrd0
의 페인팅을 수행 할 수 있습니다. 그게 제가 이미하고있는 일입니다. 필자는 페인트 이벤트에서 항상 수퍼 클래스를 호출하지만 주어진 예제에 추가하는 것을 잊어 버렸습니다. 하지만 그건 내 문제가 아니야. 내 문제는 QTreeWidget의 도형 주위에 직사각형을 그려야한다는 것입니다. QTreeWidget은 수퍼 클래스를 호출하여 수행 할 수 없습니다. QPainter 같은 것이 필요합니다 ... –
왜 QPainter를 만들 수 없습니까? 'QTreeWidget'은'QWidget'의 서브 클래스 여야합니다 ... 그리고'QWidget :: paintEvent (event)'를'if' 외부에 추가해야합니다. – msrd0