我目前正在使用Qt C ++进行GUI项目。我工作的一部分包括跟踪鼠标的移动并用绿色像素标记其位置。跟踪仅应在存储在标签中的特定图像上进行。
到目前为止,鼠标的跟踪工作正常,我已经能够从QMouseEvent中提取坐标。但是,我似乎很难为鼠标所在的像素着色。我想要的只是一个彩色像素,该像素连续标记鼠标所在的位置,但是我得到的所有像素都是鼠标所在的彩色像素,并且图像似乎也没有更新。当我走过去时,我得到的只是一个黑色标签(图像被擦除),以及所有我用鼠标移动过的绿色像素。 但是,它只应将现有图像上的当前像素着色,然后应刷新到下一个位置。这是我为此实现的功能:
QPoint current = event->pos();
QPoint localPos = ui->label_image_2->mapFromParent(current);
if(ui->label_image_2->rect().contains((localPos))){
image.setPixel(localPos.x(),localPos.y(), qRgb(0,255,0));
ui->label_image_2->setPixmap(QPixmap::fromImage(image));
当我遍历label_2上的图像时,图像上的当前位置应标记为绿色。我是否缺少某些东西,还是我的一般方法不正确?
你的image
变量来自哪里?没有正确的内容。你可能在标签上设置了一些图像,但是应该在image
成员变量上设置该图像,然后使用该图像在标签上进行设置。
事实证明,我能够修复它,我已经将image声明为全局QImage变量,但是我将函数称为
draw(image,,...)
。称它为draw(&image,,...)
固定的问题!