qixibujiabing 2019-11-13 12:02 采纳率: 50%
浏览 888
已采纳

QT中如何实现在普通函数中完成ui数据更新

现自定义了 信号函数、槽函数,打算在普通函数中的某个位置emit 信号,
槽函数中完成ui更新,现在发现在普通函数中无法识别到 信号函数,像这样想
更新ui的情况如何解决呢?谢谢大佬

  • 写回答

4条回答 默认 最新

  • 「已注销」 2019-11-13 17:26
    关注
    void go(){ // 普通函数go
        for (QWidget *w:qApp->topLevelWidgets()) { // 获取顶级窗口
            if (w->objectName() == "QtGuiApplication1Class") // 判断是否是主窗口类名:主窗口类 + Class
            {                                                // 我的主窗口类是:QtGuiApplication1
                QtGuiApplication1* qw = (QtGuiApplication1*)w; // 转换并获取主窗口指针
                emit qw->send("发出信号");  // 然后可以随意操作主窗口了
            }   
        }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • qtchen_1988 2019-11-13 12:09
    关注

    普通函数中无法识别到 信号函数? 你的普通函数跟信号函数是同一个类否? 还有,检查一下声明信号函数是否在signals:下声明的

    评论
  • 豆丷 2019-11-13 16:52
    关注

    普通函数是emit不了的,他识别不了这个关键字
    你可以再建一个类B,继承qobject,用他的成员函数emit
    同时要connect关联这个信号和类A的槽对应起来

    评论
  • clz2012 2019-12-11 11:15
    关注

    Qt编程有的时候不一定非得用信号槽,你现在是一个全局的普通函数,可能是某个回调,你在回调里只要能访问拥有这个槽函数的对象即可
    直接像普通函数那样调用也是一样的

    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 我需要在PC端 开两个抖店工作台客户端.(语言-java)
  • ¥15 有没有哪位厉害的人可以用C#可视化呀
  • ¥15 可以帮我看看代码哪里错了吗
  • ¥15 设计一个成绩管理系统
  • ¥15 PCL注册的选点等函数如何取消注册
  • ¥15 问一下各位,为什么我用蓝牙直接发送模拟输入的数据,接收端显示乱码呢,米思齐软件上usb串口显示正常的字符串呢?
  • ¥15 Python爬虫程序
  • ¥15 crypto 这种的应该怎么找flag?
  • ¥15 代码已写好,求帮我指出错误,有偿!
  • ¥15 matlab+波形匹配算法