问题标签 [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.

0 投票
0 回答
208 浏览

qt - 关闭视图后 Qt 信号/插槽断开连接

我有一个应用程序,其视图包含不同窗口中各种模型的表视图。当我将表子视图添加到主视图时,会从视图到子视图建立某些连接。我第一次创建表子视图时,连接已建立并且所有工作都按预期工作。但是,如果我关闭子视图窗格并再次打开它,则不会重新建立连接。代码已执行,但实际上似乎没有发生任何连接。我认为这与不正确删除先前关闭的子视图有关。

我在子视图类中实现了 closeEvent() 并从内部调用了 deleteLater() 。不知道从同一个对象中调用 deleteLater 是否合理,但它确实触发了对象的析构函数。我也调用了disconnect(this); 在closeEvent()中,但无济于事。

唯一的另一件事是主视图没有被指定为子视图的父视图。修复这似乎是有问题的。有必要吗?

上面的代码是在主视图和子视图之间创建连接的代码。子视图由工厂创建,该工厂跨两个类实现......

UserSettings 单例的 updateSettings 方法为每个需要在主应用程序中更新的用户偏好值发出一个信号(例如,撤消堆栈大小、窗口大小等)。信号通过主视图连接到子视图,再连接到使用该值的目标类实例。

看起来,如果我什至打开一个完全不同的表子视图,它也会产生相同的效果 - 没有建立连接。那么,似乎只为第一个 subvew 建立了联系。之后,它会失败 - 无论第一个子视图是否在创建另一个子视图之前被销毁。

也许问题出在视图方面?

0 投票
1 回答
120 浏览

c++ - 是否可以将功能编程到 Qt 的 QWidget 的 SLOT() 中,还是应该使用 QSignalMapper?

在我的 Qt 应用程序中,我在 QVBoxLayouts 中为“问卷”动态创建“问题”。有 3 种类型的问题:布尔型、文本型和单选型。

当用户向问卷“添加问题”时,他们会看到一个 QComboBox。当这个 QComboBox 的索引/文本被编辑时,我想对发出的信号采取行动。

我想要类似 Java 的东西(来自一个旧的 Android 项目):

是否可以在 Qt/C++ 中具有相同的功能,例如:

我从这里的另一篇文章中了解到,理想的方法QSignalMapper,但希望以与上述类似的方式执行任务。

通常,我在这里或从相关的谷歌搜索中找到我的答案(我可能正在搜索错误的东西,因为我不知道它的名字),所以希望这里有人能给我一个是或不是。谢谢

0 投票
1 回答
965 浏览

c++ - 串口接收到字节时发出信号

我正在尝试使用 boost 库在 C++ 中连接一个信号和一个插槽。我的代码当前打开一个文件并从中读取数据。但是,我正在尝试改进代码,以便它可以使用串行端口实时读取和分析数据。我想做的是仅在串行端口中有可用数据时才调用分析函数。

我该怎么做呢?我以前在 Qt 中做过,但是我不能在 Qt 中使用信号和插槽,因为这段代码不使用他们的 moc 工具。

0 投票
1 回答
1737 浏览

c++ - C++/Qt - 从一个线程到另一个线程槽的信号

我正在设置一个与QTcpSocket. 设置与服务器的连接的部分是作为线程实现的。

这就是我的类的样子,它实现了连接函数(.hpp):

这就是我实现这个类(.cpp)的方式;

我通过以下方式启动线程:

当我测试程序时,连接器已正确创建。他启动函数 transformIP() 和 connectToServer()。目前我没有运行服务器,所以客户端无法连接。这将导致发出信号 connectionFailed() 使用连接器对象启动线程的客户端类应接收此信号并对其作出反应。

问题是:信号似乎没有发出,因为客户端类没有对它做出反应。这是客户端类中的部分,我将信号连接到某个插槽:

太好了,如果有人知道如何解决这个问题,谢谢:)

0 投票
2 回答
3883 浏览

qt - 在 Qt 程序中显示实际时间

MainWindow在标题中显示实际时间(Hh:mm:ss)的简单方法是什么?使用插槽和信号技术。

0 投票
1 回答
273 浏览

qt - 如何将 leaveEvent 与从 QtCreator 表单创建的 listView 一起使用?

QListView当鼠标离开我的( )空间时,我试图调用某个函数(或插槽tableView)。通常,您可以使用该leaveEvent()功能。所以例如我可以写

这按预期工作。当鼠标离开MainWindow小部件时,应用程序退出。但是,如果我想在鼠标离开小部件QListView内部的对象时退出应用程序MainWindow怎么办?

QListView当它在 Qt Creator 的表单设计器中创建时,我如何为此重新实现一个函数?

这是我(未成功)尝试过的:

在下面,我尝试使用leaveEvent()作为信号,它说leaveEvent未定义(您甚至可以将事件用作SIGNALs 吗?)

基本上,当鼠标离开我时,我试图调用一些函数,tableView这是用 Qt Creator 的表单设计器创建的。该类QListView似乎有一个mouseEntered() SIGNAL,但没有mouseLeave() SIGNAL

0 投票
1 回答
715 浏览

pyqt - PyQt和Qt在处理用户定义的信号/槽时的区别

好吧,我对 Qt 很熟悉,但是在使用 PyQt 时,信号/槽的语法真的让我很困惑。使用 C++/Qt 时,编译器会提示您在信号/插槽方面有什么错误,但 PyQt 默认配置不会提示错误。有没有办法或诸如调试触发模式使 PyQt 显示更多信息?代码如下:

在 C++ 中,QObject::connect 返回值将显示信号/插槽绑定是否成功。在 PyQt 中,返回值为 True,但不会触发插槽。我的问题:1)信号应该是类成员还是实例成员?2)如果 QObject.connect 的返回值不能给出绑定成功与否的提示,有没有其他方法可以检测到呢?我想在信号发送器和槽接收器之外绑定信号/槽,所以我更喜欢使用 QObject.connect 方式。但是我怎样才能正确地写这个,我尝试了以下方法,都失败了。

0 投票
1 回答
482 浏览

c++ - 如何通过 Qt 中的几个类对象发出信号?

我有几个类:A 类 - 最高类、B 类和 C 类,它们在 A 类构造函数中初始化。在 B 类中,构造函数被初始化为 B1 类,在 C 类中,构造函数被初始化为 C1 类。C1 对象和 B1 对象互不相见。

每次我需要从 C1 类向 B1 类发送信号时,我连接 C1 和 C、C 和 B,最后连接 B 和 B1。因此,每次我的程序在 C1 类对象中发出信号时,它都会发送到 C 类对象,然后发送到 B,然后再发送到 B1。(在图像上)它是正确的 Qt 方式吗?或者有更好的方法来做到这一点?

在此处输入图像描述

0 投票
2 回答
1319 浏览

python - PySide Signal 不能重载 Python 类

PySide 声称Signals can be defined using the QtCore.Signal() class. Python types and C types can be passed as parameters to it. If you need to overload it just pass the types as tuples or lists. 从 PySide 中的 PySide Doc Si​​gnals and Slots 中,他们展示了一种同时创建多个信号的方法。那条线是:

我走了一点,创造了这样的东西(用于学习目的):

A并且B是我创建的两个不同的虚拟新样式类。然后我通过打印它们来调查实际创建了多少信号:

我得到了这些:

Obersevation: tuple, list,Exception和我的习惯AB得到相同的信号。我知道元组和列表有点笼统,被 PySide 用来重载东西。但为什么我的AB也得到相同的信号?看起来只有那些真正原始的类型,如int,float并且str在 Python 中获得新信号。

任何人都可以解释这种奇怪的行为吗?

提前非常感谢!

[更新]

当我在一个真正的 PySide 项目中遇到问题时,我做了上述探索。我将真实版本简化为:

它将打印出:

我预计A is good只能从 sayA 打印。

0 投票
1 回答
1088 浏览

qt - 如何将小部件变量传递给插槽?

我是一个 QT 初学者,我正在编写一个具有两个 QPushButtons 和两个 QTextEdits 的 GUI 应用程序。单击按钮 1 时,我只希望 QTextEdit 1 显示某些内容,单击按钮 2 时,我只希望 QTextEdit 2 显示某些内容,下面是我的代码,但它不起作用,因为我似乎无法将参数传递给槽法……

我想知道是否有类似的方法可以让这个工作?谢谢您的回答。