问题标签 [qt-slot]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - PyQt5:未调用单独文件中的插槽
我现在有一个基本的 GUI,每个页面都在自己的文件中。我可以毫无问题地导航到每个页面,但是我很难将搜索查询简单地传递给另一个小部件。这是我在主文件中设置连接的地方:
这是搜索文件:
这是结果文件:
按照我的理解,我现在所拥有的应该是有效的。当用户在搜索页面上提交一些文本时,它会调用 submitSearch() 函数。该函数发出两个信号:第一个是 searchSubmitted,将屏幕更改为结果屏幕(按预期工作)。第二个,passQuery,应该将文本框的内容传递给结果文件中连接的函数grabSearch()。但是,尽管已连接,但 passQuery 似乎从未被结果页面捕获。我已经用打印语句验证了它正在发出,但就是这样。
我在这里想念什么?
python - 如何使用 Signal 将 python 字典发送到 QML 接口?
我想发送字典,其中包含我需要用于动态创建 qml 对象的数据,从 PySide2 类到 QML 接口,因为我需要响应某些事件,所以我需要使用信号和插槽。
因为我刚刚开始使用 QML 和 python,所以我尝试创建一个简单的项目来玩玩(从代码中可以看到)
QML:
蟒蛇 3:
我期望的输出(使用“python3 Test_dict_1.py”启动脚本)是:
我得到的是:
你能告诉我我做错了什么吗?代码中是否有错误或这件事无法完成?
python - 在 Qt 的 slot 中使用任何 'return' 语句会产生什么影响
例如,我将 QPushButton 的“点击”信号连接到名为“func_with_return”的函数。假设这个函数中只有三个语句:第一个是'print('start')',第二个是'return 1',最后一个是'print('end')'。我有基于 PyQt5 的 python 代码。
基本上点击这个按钮后没有报错。我很好奇的是“槽”内的“返回”引起的中断。这个中断会不会和signal&slot机制发生冲突?
python - `@pyqtSlot()` 对嵌套函数有同样的影响吗?
1. 介绍
我正在使用PyQt5
Python 3.7 开发一个多线程应用程序,为此我依赖QThread
.
现在假设我有一个派生自QObject
. 在该类中,我定义了一个用 注释的函数@pyqtSlot
:
在其他一些代码中,我将其实例化Worker()
并移至新线程,如下所示:
通常,some_function()
现在应该在my_thread
. 那是因为:
- 我已将
Worker()
对象推到my_thread
. - 当命令
my_thread
开始时,我实际上已经在那个线程中产生了一个新的 Qt 事件循环。该my_worker
对象存在于这个事件循环中。它的所有插槽都可以接收一个事件,该事件在此事件循环中执行。 some_function()
被正确注释为@pyqtSlot()
. 单次计时器挂钩到此插槽并触发一个事件。多亏了 Qt-event-loop inmy_thread
,插槽有效地执行了它的代码my_thread
。
2. 我的问题
我的问题是关于嵌套函数(也称为“内部函数”)。考虑一下:
如您所见,some_inner_function()
被注释为@pyqtSlot
. 它的代码是否也会在Worker()
-object 所在的线程中运行?
3.旁注:如何hook到内部函数
您可能想知道我如何将某些东西与内部函数挂钩。好吧,考虑以下几点:
如果您some_function()
直接从主线程调用,它将(不幸地)在主线程中运行。如果没有正确使用信号槽机制,您将不会切换线程。
内部的单发计时器some_function()
钩住some_inner_function()
并开火。内部函数是否会执行my_thread
(假设Worker()
-object 已分配给my_thread
)?
qt - 是否可以从 QRemoteObject 动态副本插槽中获取返回值?
我无法调用返回 QRemoteObjectDynamicReplica 值的插槽。
Replica 上的 InvokeMethod 似乎不支持返回值。我只成功地调用了 void 返回槽,即使在这种情况下,在 DirectConnection 模式下,invokeMethod 在主机槽调用之前完成,所以似乎没有主机应答在等待。
我有这样的代码,它在主机端完美运行,但在副本端却不行。
如果我很好地理解了 REPC 的主题(我还没有尝试过),似乎可以调用返回值槽: 用法是声明 SLOT 后跟用括号括起来的所需签名。返回值可以包含在声明中。如果跳过返回值,将在生成的文件中使用 void。
REPC 是否做了某种魔术来允许此功能,还是我错过了什么?
感谢帮助。
c++ - QSpinBox and QDoubleSpinBox do not call method on valueChanged
All i want to do is call a method when the value of a qspinbox and a doublespinbox are changed.
I do not need the actual value from the spinbox being changed, i just want it to trigger the calling of another method. Why does the code below not error or do anything at all? Not even call the method?
cpp
header
python - 为什么不能将生成器函数用作插槽?
我正在尝试遍历 PySide2 应用程序中的列表。因此,每次按下“下一步”按钮时,都会从列表中返回并显示下一项。我可以跟踪列表中最近读取的条目的索引,并在每个插槽调用时手动增加索引,但我认为将插槽转换为生成器函数可能更优雅。但它不起作用。
最小(非)工作示例如下。
我有点期待每次按下“下一步”按钮时都会打印一个不同的字符串,但它只是坐在那里嘲笑我......
有人能指出我从根本上误解的事情吗?
python - 从其他类发出的 PyQt5 信号有问题
在下面的示例中,我想将信号从 A 发送到 Main,从 B 发送到 Main。接收到来自 A 的信号是可以的,但是 B 不工作。棘手的部分是 B 中的“计算”必须从 A 触发,而不是从 Main 触发。将不胜感激任何帮助。
主要的:
A类:
B类:
c++ - 如何将函数指针传递给方法,以便可以在 Qt 的 connect() 中使用?
背景:我想动态创建上下文菜单的结构并将操作项的插槽传递给创建上下文菜单的方法。
实际的插槽位于 QWidget 类中。我通过传递函数指针尝试了不同的解决方案。但他们不编译。典型错误消息:“无法使用 'void (TextEdit::*)()' 类型的右值初始化 'void (*)()' 类型的参数”
这会编译,但不会触发所需的事件:
以及对应的方法:
我确信有一个明显的解决方案,但我无法弄清楚。
解决方案:在这种情况下,您必须通过SLOT(onInsertChars())
而不是SLOT(TextEdit::onInsertChars())
.
c++ - 从 db 在 QT c++ 中实时显示数据
像这样
该项目有一个具有此架构的页面:
整数中有一个 QlineEdit 和一个 texBox(或者可以使用另一个小部件)我想在文本框中显示数据库的相关单元格(带有查询的 sqlite 例如:select * frome dbName where code='QlineEdit integer'),但没有一个按钮动作,实时!
当我搜索时,可以通过 textchange() 或 QLineEdit::editingFinished(),但不知道如何