no_answer 2019-10-13 12:30 采纳率: 0%
浏览 926

QT 画图时在按钮的槽函数中创建对象,点击按钮时,paintevent就不会执行是怎么回事

我想做一个游戏,在dialog的子类里定义游戏窗口包括相关按钮,然后把自定义一个画图类B(继承自widget),用于游戏的具体实现(包括绘图)。
我在dialog的子类里生命声明了类B的指针,并在该构造函数里创建对象,然后在类B实现paintevent,这就在dialog的子类里的窗口上能绘图,-----但是在相关按钮中创建对象,然后在dialog的子类窗口就不能绘图,发现paintevent没有调用,这是为什么呢,是不是画图类B的对象必须在窗口类的构造函数中创建啊???

  • 写回答

2条回答 默认 最新

  • qtchen_1988 2019-10-14 09:56
    关注

    因为在构造函数创建时,主调用(父类)还未执行 show();全部构建后才执行showEvent(); 这时,子类也执行了showEvent(); 所以能显示。
    但是你在按钮的槽函数创建子类,这时父类已经show了,不再执行showEvent(); 子类也就不会自动执行showEvent();所以看不到。

    结论:
    你在创建子类后,添加一行: wgt->show(); 假设子类名称(wgt);

    评论

报告相同问题?

悬赏问题

  • ¥15 想问一下stata17中这段代码哪里有问题呀
  • ¥15 flink cdc无法实时同步mysql数据
  • ¥100 有人会搭建GPT-J-6B框架吗?有偿
  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决