Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 给齐玛格画线_C++_Qt_Qpainter_Qimage - Fatal编程技术网

C++ 给齐玛格画线

C++ 给齐玛格画线,c++,qt,qpainter,qimage,C++,Qt,Qpainter,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, mouseRel

我试图画一条线到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
然后我更改代码,因为它试图绘制空pixmap,所以在更改代码后,如下所示:

    QPixmap px(100, 100);
    px.fromImage (imgRaw);  // define in header file QImage imgRaw;
然后给出噪声图像(黑色和灰色破碎图像)

你能帮我解决这个问题吗

编辑:

还尝试:

QPixmap px = QPixmap::fromImage (imgRaw);

然后,它会在没有任何绘图的情况下生成相同的图像。

fromImage
是QPixmap的静态函数,不会影响“对象”,它会返回所需的pixmap。尝试使用以下代码初始化pixmap:

QPixmap px = QPixmap::fromImage(imgRaw);

fromImage
是QPixmap的一个静态函数,不会影响您的“对象”,它会返回您想要的pixmap。尝试使用以下代码初始化pixmap:

QPixmap px = QPixmap::fromImage(imgRaw);

很抱歉,我忘了提这件事。我也尝试过你的解决方案,但在那之后,它没有画出任何东西。我又得到了原始图像。你的应用程序是多线程的吗?我是在从鼠标按下发出信号后画这条线的。很抱歉,我忘了提到这一点。我也尝试过你的解决方案,但在那之后,它没有画出任何东西。我再次获得原始图像。你的应用程序是多线程的吗?在我从鼠标按下发出信号后,我正在画这条线。尝试从pos(0,0)到pos(px.width(),px.height())画一条线,以确保问题不是你传递的值。此外,尝试移除
p.end()
或将其移动到
setPixmap
-调用“可选”绘制线的后面??mouseStart_X、mouseStart_Y、mouseReleased_X、mouseReleased_Y的值以及图像的大小是多少?你说得对。问题是关于x,y坐标,我把它改成了(50,50,100,100),看到有什么不对劲。。谢谢您的帮助。请尝试从pos(0,0)到pos(px.width(),px.height())划一条线,以确保问题不是您传递的值。此外,尝试移除
p.end()
或将其移动到
setPixmap
-调用“可选”绘制线的后面??mouseStart_X、mouseStart_Y、mouseReleased_X、mouseReleased_Y的值以及图像的大小是多少?你说得对。问题是关于x,y坐标,我把它改成了(50,50,100,100),看到有什么不对劲。。谢谢你的帮助。