• 8265阅读
  • 12回复

[提问]paintEvent函数不被执行 [复制链接]

上一主题 下一主题
离线yanzh
 

只看楼主 倒序阅读 楼主  发表于: 2013-04-05
gract.rar (8 K) 下载次数:4
请帮忙看下,为什么点击按钮时,paintEvent函数不被调用呢?即使repaint也不起作用







离线彩阳

只看该作者 1楼 发表于: 2013-04-05
通道类加入了Qt的父子关系吗?
上海Qt开发联盟,热忱地欢迎你的加入!
离线yanzh

只看该作者 2楼 发表于: 2013-04-05
通道类定义:
class CChannel : public QWidget
{
    Q_OBJECT
public:
    explicit CChannel(QWidget *parent = 0);
========================================================================
class CAnalog : public CChannel
{
    Q_OBJECT
public:
    explicit CAnalog(QWidget *parent = 0);

==========================================

在记录类中,读文件时
        CAnalog *chan = new CAnalog(this);

郁闷了

离线yanzh

只看该作者 3楼 发表于: 2013-04-05
设计中通道控件是可以被手动移动的,可我都弄成这样了,paintEvent函数还是不执行




函数名字也没写错啊
protected:    void paintEvent(QPaintEvent *);

通道类都是在记录类中创建的,传入的都是this指针,但是我在记录类中强制调用repaint或者update都不能使通道类调用paintEvent
感觉是不是类继承哪里有点问题。
离线yanzh

只看该作者 4楼 发表于: 2013-04-06
哪位大神指点下呀
离线pxiao_xiao

只看该作者 5楼 发表于: 2013-04-06
你的QMdiSubWindow 能更新吗?
离线yanzh

只看该作者 6楼 发表于: 2013-04-06
回 5楼(pxiao_xiao) 的帖子
这个是可以的,现在就是通道类无法绘制,我在它的paintEvent函数中设置断点仿真,从始至终就没进过一次,在这个类里安装事件过滤器,能检查到有鼠标事件,但是没有paint事件
离线pxiao_xiao

只看该作者 7楼 发表于: 2013-04-06
QWidget *subW = midArea->addSubWindow(scrollArea);    

调用函数的时候会给你的scrollArea加个QMdiSubWindow的壳 我问的是 系统给你加的这个隐藏的QMdiSubWindow壳可以刷新吗
离线yanzh

只看该作者 8楼 发表于: 2013-04-06
不好意思,不太明白,我没有用 QMdiSubWindow去做具体的事情
不过打开多个文档窗口显示什么的是没有问题的,能显示出通道的名字颜色也有,就是没有图形
离线pxiao_xiao

只看该作者 9楼 发表于: 2013-04-06
有人反映了 这是Qt的一个Bug
从表面看 QMainWindow过滤掉了作为centerWidget的paint事件
你只能自己写个/*QWidget*/ QMyWidget* pixWidget; 里面重写paintEvent()
原来
void CChannel::updatePoints()
{
    length++;
    if(length==5)
        length = 1;

    update();                  //改成---->pixWidget->update();
}
离线yanzh

只看该作者 10楼 发表于: 2013-04-07
回 9楼(pxiao_xiao) 的帖子
十分感谢!
Qt最近用起来总有点别扭
我的另外一个工程,在家里的电脑上调试,总是不能自动paintEvent,郁闷了2天
今天一来公司,在公司的电脑上试,竟然好了!莫名其妙的
离线pxiao_xiao

只看该作者 11楼 发表于: 2013-04-07
我还遇到过 QTableWidget的 item(row , column)不管 column怎么变 总是返回这行的第0列的item的指针
离线zhaozuqian

只看该作者 12楼 发表于: 2014-02-12
大神,膜拜!!!!
快速回复
限100 字节
 
上一个 下一个