当前位置: 代码迷 >> QT开发 >> qt QLabel半透明之后 背景刷新有关问题
  详细解决方案

qt QLabel半透明之后 背景刷新有关问题

热度:451   发布时间:2016-04-25 05:10:42.0
qt QLabel半透明之后 背景刷新问题
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++操作放到你定时器触发的地方进行处理就可以了。