1

我已经尝试了我所知道的一切,我得出的结论是这个问题超出了我的想象。我试过运行 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(); 没有运气。

4

0 回答 0