Система координат, которую вам нужно использовать, относительно верхней левой части виджета, но вы, очевидно, используете одну из них относительно родителя виджета. (Координаты x и y виджета относительно их родителя). Таким образом, ваша линия будет обрезана.
Кроме того, нет необходимости вызывать QPainter :: begin и QPainter :: end, когда вы создаете его с помощью параметра QWidget *. И художник в вашем коде тоже не удаляется. Нет необходимости создавать рисовальщик в куче с помощью new
: я бы просто создал его в стеке.
Попробуйте:
void myProg::paintEvent(QPaintEvent *pe)
{
QProgressBar::paintEvent(pe);
QRect region = pe->rect();
QPainter painter(this);
QPen pen(Qt::red); //Note: set line colour like this
//(Brush line removed; not necessary when drawing a line)
int x = 0; //Note changed
int y = height() / 2; //Note changed
pen.setWidth(10);
painter.setPen(pen);
painter.drawLine(x,y,x+100,y);
}
Это должно нарисовать красную горизонтальную линию длиной 100 пикселей, начиная с середины слева от виджета.