나는 사용자 정의 위젯에 QProgressBar를 서브 클래 싱하고있어, 나는 다음 코드로 paintEvent 방법 덮어 : 시작으로,Qt는 문제가 오버라이드 (override) paintEvent
void myProg::paintEvent(QPaintEvent *pe)
{
QProgressBar::paintEvent(pe);
QRect region = pe->rect();
QPainter *painter = new QPainter(this);
QPen *pen = new QPen;
painter->begin(this);
painter->setBrush(Qt::red);
int x = this->x();
int y = this->y();
pen->setWidth(10);
painter->setPen(*pen);
painter->drawLine(x,y,x+100,y);
painter->end();
}
나는 빨간색 선을 표시하기 위해 노력하고있어를 포인트, 위젯에 내 자신의 수정 사항을 추가 할 수 있는지 확인하십시오. 그러나 이것은 작동하지 않습니다. 위젯은 일반 QProgressBar로만 표시됩니다. 무엇이 잘못 될 수 있는지에 대한 아이디어가 있습니까? 당신이 쓴 한 것에 대해
화면에 무엇인가가 표시되는지 여부를 알려주는 디버그 플래그를 설정할 수 있습니까? – Geo
Geo : 디버그 플래그가 있다고 생각하지 않습니다. 미래에 이것이 문제가 될지 모른다면 걱정할 필요가 있습니다. 예를 들어 다음을 시도해 볼 수 있습니다. -10000, -10000에서 10000, 10000까지 위젯 위에 큰 빨간색 상자를 그려보고 더 이상 출력을 볼 수 없을 때까지 코드를 변경하십시오. 또한 QPainter에서 클리핑 영역이나 클리핑 패스를 가져 와서 경계 사각형을 인쇄하여 좌표가 생각한 것과 가까운 지 확인하십시오. – Doug