我已经尝试了我所知道的一切,我得出的结论是这个问题超出了我的想象。我试过运行 repaint()、update() 和 this->update(); 以及我能想到的一切。Pixmap 在函数外部(在构造函数中)工作,但不在函数内部。下面是代码(只贴相关的,如果需要更多请注明):
我的小部件.h
#define NUM_POINTERS 10
QLabel* pointerArray[NUM_POINTERS];
QPixmap circle;
QPixmap* triangle;
QPixmap* whitex;
int activePointer;
我的小部件.cpp
activePointer = 0;
QPixmap circle (":/Resources/greencircle.png");
this->whitex = new QPixmap(":/Resources/white_x.png");
this->triangle = new QPixmap(":/Resources/redtriangle.png");
//create an array of pointers to the label1-10 objects
pointerArray[0] = ui->label1;
pointerArray[1] = ui->label2;
pointerArray[2] = ui->label3;
...
pointerArray[9] = ui->label10;
for (int i = 0;i < 10; i++)
{
pointerArray[i]->setPixmap(circle);
}
void myWidget::changeImage()
{
updatesEnabled();
if (activePointer < 10){
pointerArray[activePointer]->setPixmap(*this->whitex);
activePointer++;
update();
}
else{
printf("end of array\n");
fflush(stdout);
}
}
我在我想要的地方打印了一排圆圈,但我不会得到任何白色的 X。像素图更改为 whitex,但不会更新。它不会崩溃,它会继续添加到 activePointer 直到数组末尾。
提前致谢。
快速编辑:我试过 pointerArray[activePointer]->update(); 没有运气。