C++ 如何通过外部命令与Qt小部件通信?

C++ 如何通过外部命令与Qt小部件通信?,c++,qt,C++,Qt,我正在开发一个工具,在该工具的主窗口上添加了一些Qt小部件。 当我们习惯于单击Qt小部件时,会弹出一个上下文菜单(并通过eventFilter调用了一些函数)来执行所需的工作,例如,doTask()插槽会被receiver对象调用 现在我必须在窗口上添加一个横幅菜单,它必须复制RMB上下文菜单的所有功能。 因为这个横幅菜单不是Qt的,而是用一些内部函数(比如LISP)编写的,所以我在调用slot函数-doTask()时遇到了问题,因为我不知道receiver对象是什么 如何通过一些外部命令/语言

我正在开发一个工具,在该工具的主窗口上添加了一些Qt小部件。 当我们习惯于单击Qt小部件时,会弹出一个上下文菜单(并通过eventFilter调用了一些函数)来执行所需的工作,例如,doTask()插槽会被receiver对象调用

现在我必须在窗口上添加一个横幅菜单,它必须复制RMB上下文菜单的所有功能。 因为这个横幅菜单不是Qt的,而是用一些内部函数(比如LISP)编写的,所以我在调用slot函数-doTask()时遇到了问题,因为我不知道receiver对象是什么

如何通过一些外部命令/语言与Qt小部件通信


如果有什么不清楚的地方,请添加注释。

您不能从作为插槽调用代理的QT感知对象公开一个简单的C风格方法吗。例如,您的banner调用方法,然后方法调用相应的slot?

您的基本问题只是知道接收方对象。一旦你这样做了,你可以直接调用它的插槽(不需要通过信号)


菜单知道这一点,因为它保留一个指向接收器对象的指针。您自己的横幅菜单也必须这样做。“它不知道接收者对象”因此必须是固定的。

嗨,Gaz,我对QT非常陌生,对QT感知对象不太了解,这可能是QT的一个标准问题。如果您可以提供任何链接或任何教程来阅读更多关于您建议的内容,这将非常有用。“Qt感知对象”基本上是使用Qt的moc工具编译的任何对象,因此可以具有
信号
。但这并不能解决问题;你知道我必须找出那个物体是什么。谢谢你澄清它,MSalters。你能帮我解答这些问题吗。。解决“它不知道接收方对象”问题的最佳方法是什么?我应该使用Qt的findChildren函数来搜索特定的接收方对象还是任何其他方法?如果我说,条幅菜单应该只在选中特定小部件的单元格时才起作用(比如,如果你在小部件中选择了某个内容,那么只有你才应该使用条幅菜单)。此信息是否有助于搜索接收器对象?实际上,我正在做的是,复制横幅菜单中的人民币上下文菜单功能。看,Qt信号基本上只是一个消息传递系统。我们可以帮助您处理Qt部分,但您是唯一知道哪个对象应该接收信号的人。我们没有,你的程序也没有。对于RMB点击,Qt可以确定接收者是鼠标指针下方的小部件。感谢MSlaters的帮助。如果你能在Qt部分多帮点忙,那就太好了。据我所知,我应该让它从banner菜单回调发出一个信号,它将与特定Qt小部件中的相应插槽连接,这样我就可以用我的C函数与Qt小部件通信了?很抱歉在评论中问了这么多问题,如果你能提供一些链接或教程,让C函数发出一个可以由QtWidgets处理的信号,那就更好了。没有Qt部分。对不起,我似乎帮不了你。你没有理解你的问题。还有,C函数突然从何而来?信号仅由Qt对象发出。(用
Q_对象定义的类
macro)