• 4616阅读
  • 4回复

重写 paintEvent 事件  陷入死循环 [复制链接]

上一主题 下一主题
离线weihua1984
 

只看楼主 正序阅读 楼主  发表于: 2011-10-18
  1. void Label::paintEvent(QPaintEvent *event)
  2. {
  3. //启动反走样
  4. QPainter painter(this);
  5. painter.setRenderHint(QPainter::Antialiasing,true);//启动反走样
  6. //绘制边框
  7. QPen pen(Qt::blue);
  8. painter.setPen(pen);
  9. painter.setBrush(QColor(this->getBackgroundColor()));
  10. painter.drawRoundRect(QRect(0,0,this->width(),this->height()), 1,1);
  11. painter.drawText(0,0,this->width(),this->height(),Qt::AlignCenter,"labelcontrol");
  12. qDebug()<<"ssss";
  13. }

重载了QLabel的paintEvent
在该事件中简单绘制了背景,文本

在mainwindow中创建了一个label显示
#include "label.h"
QMainwindow::QMainwindow
{
   Label *label = new Label(this);
   label->show();
}

运行时,控制台一直输出sss
即一直在调用paintevent,这样肯定不对吧

这是哪错了,高手指点
离线weihua1984

只看该作者 4楼 发表于: 2011-10-18
Re:回 楼主(weihua1984) 的帖子
引用第2楼shaoshuai898于2011-10-18 15:56发表的 回 楼主(weihua1984) 的帖子 :
LZ 可以翻资料看看Qt event的使用, 重写的那里为啥要调用qDug的呢?

只是为测试,看看是不是一直在调
离线weihua1984

只看该作者 3楼 发表于: 2011-10-18
不好意思 ,我代码没有贴全,找到原因了,
是在paintEvent中我又使用了
setStyleSheets设置了样式,


谢谢楼上几位
离线shaoshuai898

只看该作者 2楼 发表于: 2011-10-18
回 楼主(weihua1984) 的帖子
LZ 可以翻资料看看Qt event的使用, 重写的那里为啥要调用qDug的呢?
离线jdwx

只看该作者 1楼 发表于: 2011-10-18
回 楼主(weihua1984) 的帖子
你的界面上就一个label?有没有edit?
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
快速回复
限100 字节
 
上一个 下一个