u010033909
ALIEN_小狼
采纳率100%
2019-11-13 12:02

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

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

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

4条回答

  • lee_jackgg 我的大神666 2年前
    void go(){ // 普通函数go
        for (QWidget *w:qApp->topLevelWidgets()) { // 获取顶级窗口
            if (w->objectName() == "QtGuiApplication1Class") // 判断是否是主窗口类名:主窗口类 + Class
            {                                                // 我的主窗口类是:QtGuiApplication1
                QtGuiApplication1* qw = (QtGuiApplication1*)w; // 转换并获取主窗口指针
                emit qw->send("发出信号");  // 然后可以随意操作主窗口了
            }   
        }
    }
    
    点赞 评论 复制链接分享
  • qq_31762199 豆丷 2年前

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

    点赞 评论 复制链接分享
  • qtchen_1988 qtchen_1988 2年前

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

    点赞 评论 复制链接分享
  • chenlingzhen clz2012 2年前

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

    点赞 评论 复制链接分享