查看完整版本: [-- QT中如何实现父类发送信息给子类,信息槽? --]

QTCN开发网 -> Qt基础编程 -> QT中如何实现父类发送信息给子类,信息槽? [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

aimeini 2021-08-30 02:10

QT中如何实现父类发送信息给子类,信息槽?

1.我有四个界面,比如说前两个Home(主界面)和Name,因为都用到了touchevent,所以想做个自定义的widget,也就是MyWidget,像代码里那样用,touchevent功能正常。Home有个按钮可跳转到Name。
  1. Home::Home(QWidget *parent)      //作为界面在main中show();
        : MyWidget(parent),
2.每个界面都要用到背景更换、返回主界面的操作,有的要开始暂停,所以我又做了个widget来作为菜单页,菜单页里放上各类按钮,用来实现功能,(主要是考虑到页面整洁不想加按钮和菜单栏),通过MyWidget的双击事件调出,功能正常。菜单页继承自QWidget,通过在MyWidget里实例化实现。
3.假设我现在从Home跳转到Name页,双击后调出菜单页,比如点击菜单页上的一个按钮实现“关闭菜单页,关闭Name,显示Home页的操作”,现在可以实现发送信号给MyWidget,但无法操作Home和Name。
4.我尝试了在Home实例化菜单类,再通过connnect连接,但槽函数没有执行,我想是在这实例化的菜单类不是打开的菜单页,所以无法建立连接,所以退一步,先同MyWidget建立连接(毕竟打开的菜单页在这里实例化的),再想办法让父类MyWidget发送信号连接子类Home的槽。
在这里并没有对MyWidget或者Home进行实例化,所以不是父子窗口的信号连接问题。
所以,我想干的事是:在通过菜单页按钮操作Home和Name上,问题的关键是:父类MyWidget发送信号连接子类Home的槽,其实我没找到相关的问题,所以这条路可能走不通,想再看看有没有其他路子

suzhuorui 2021-08-30 10:19
QT信号槽yyds,再不行用回调试试

fsu0413 2021-09-04 13:21
信号写在mywidget里,举个例子命名为menuActioned(),home作为继承类,里面直接就有信号,在home的构造函数里就可以链接槽
给菜单widget加个变量,举个例子命名为myWidget,类型是mywidget*,用来存储打开菜单widget的界面,在双击事件调出的时候将双击事件的this传给菜单widget
菜单widget新增槽函数,举个例子命名为slotMenuActioned(),在里面emit myWidget->menuActioned()
菜单项actioned信号链接slotMenuActioned信号槽

这样就大功告成了


查看完整版本: [-- QT中如何实现父类发送信息给子类,信息槽? --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled