Рисование линии в QImage

Я пытаюсь нарисовать линию в QImage и показать ее в Qlabel. Однако у меня есть некоторые проблемы, которые я не могу решить.

    QPixmap px;
    px.fromImage (imgRaw);  // define in header file QImage imgRaw; 

    QPainter p (&px);
    p.setPen (Qt::red);

    p.drawLine (mouseStart_X, mouseStart_Y, mouseReleased_X, mouseReleased_Y);
    p.end ();

    ui->lblRightImg->setPixmap (px);
    ui->lblRightImg->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored);
    ui->lblRightImg->setScaledContents(true);

Когда я использовал этот код выше, он дает такую ​​​​ошибку:

    QPainter::begin: Paint device returned engine == 0, type: 2
    QPainter::setPen: Painter not active
    QPainter::end: Painter not active, aborted

Затем я меняю свой код, потому что он пытается рисовать в нулевом растровом изображении, поэтому после изменения кода следующим образом:

    QPixmap px(100, 100);
    px.fromImage (imgRaw);  // define in header file QImage imgRaw;

Затем он дает зашумленное изображение (черно-серое прерывистое изображение)

Не могли бы вы помочь мне решить эту проблему?

РЕДАКТИРОВАТЬ :

Также пробовал:

QPixmap px = QPixmap::fromImage (imgRaw);

Затем он дает такое же изображение без какого-либо рисунка.


person goGud    schedule 22.12.2014    source источник
comment
Мне жаль, что я забыл упомянуть об этом. Я также попробовал ваше решение, но после этого оно ничего не рисует. Я снова получаю исходное изображение.   -  person goGud    schedule 22.12.2014
comment
ваше приложение многопоточное?   -  person Shf    schedule 22.12.2014
comment
Я рисую эту линию после того, как испускаю сигналы от mousepressed..   -  person goGud    schedule 22.12.2014


Ответы (1)


fromImage является статической функцией QPixmap и не влияет на ваш «объект», она возвращает желаемое растровое изображение. Попробуйте использовать следующий код для инициализации растрового изображения:

QPixmap px = QPixmap::fromImage(imgRaw);
person Robert    schedule 22.12.2014
comment
Попробуйте нарисовать линию от pos(0,0) до pos(px.width(),px.height()) просто чтобы убедиться, что проблема не в значениях, которые вы передаете. Кроме того, попробуйте удалить p.end() или переместить его после вызова setPixmap. - person Robert; 22.12.2014
comment
Что с альтернативой drawLine?? Каковы значения mouseStart_X, mouseStart_Y, mouseReleased_X, mouseReleased_Y и размер изображения? - person Robert; 22.12.2014
comment
Ты прав. проблема связана с координатами x, y. Я изменил его на (50, 50, 100, 100) и вижу, что что-то не так. Спасибо за вашу помощь. - person goGud; 22.12.2014