img_no = 3;
对话框上有个半透明QLabel。
文字每隔一段时间改变一次。
- C/C++ code
void ExImage::change_label_text() { switch(img_no%3) { case 0: label->setText(img_info[0].imgName); break; case 1: label->setText(img_info[1].imgName); break; case 2: label->setText(img_info[2].imgName); break; } }
- C/C++ code
void ExImage::paintEvent(QPaintEvent*) { switch(img_no%3) { case 0: str_img = img_info[0].imgPath; break; case 1: str_img = img_info[1].imgPath; break; case 2: str_img = img_info[2].imgPath; break; } img_no++; QPainter painter(this); QImage img(str_img); img = img.scaled(400,300); painter.drawImage(0,0,img); }
一开始显示正常,如果改变对话框大小,也会调用paintEvent。
此时,半透明的QLabel的背景和对话框的背景就会不一样。
请问这是为什么???如何修改???
------解决方案--------------------
你这个每隔一段时间是多久啊?为什么change_label_text()不放在paintEvent函数里执行?
------解决方案--------------------
这个问题主要是你在void ExImage::paintEvent(QPaintEvent*)里面将 img_no标示,进行了 img_no++操作导致的,很简单的逻辑错误。你需要将img_no++操作放到你定时器触发的地方进行处理就可以了。