signals-slots相关内容

防止在 Qt 中触发信号

我们有一个 QCheckBox 对象,当用户检查它或删除检查时,我们想要调用一个函数,因此我们将我们的函数连接到 stateChanged ( int state ) 信号.另一方面,根据某些情况,我们也在代码中改变了 QCheckBox 对象的状态,这会导致不需要的信号. 在某些情况下有什么办法可以防止发射信号吗? 解决方案 您可以使用 clicked 信号,因为它仅在用户实际单击 ..
发布时间:2021-12-23 08:29:16 C/C++开发

Qt 模型/视图/控制器示例

我刚刚开始使用 Qt,并试图获得模型-视图-控制器设计模式的简化、有效示例. 到目前为止,我已经能够使用信号和插槽将按钮等基本小部件连接到 QLabel,并在单击/释放按钮时修改视图.请参阅下面的代码以获取该示例的工作示例(在 MainWindow 类中实现). 我正在尝试定义一个类,在本例中为 Game,它将成为我的模型.我希望 Game 拥有我整个应用程序的所有数据和业务规则.我不 ..
发布时间:2021-12-21 15:14:05 其他开发

PyQt 连接到 KeyPressEvent

某些小部件将允许我执行以下操作: self.widget.clicked.connect(on_click) 但是在做: self.widget.keyPressEvent.connect(on_key) 将失败说对象没有属性“connect". 我知道对小部件进行子类化并重新实现 keyPressEvent 方法将使我能够响应事件.但是我怎样才能.connect() 到键盘事件之后 ..
发布时间:2021-12-19 22:51:41 Python

如何在 PyQt 中实现一个简单的按钮

我想在 PyQt 中实现一个简单的按钮,单击时会打印“Hello world".我该怎么做? 我是 PyQt 的真正新手. 解决方案 如果您是 PyQt4 的新手,PyQt Wiki 帮助您入门. 但与此同时,这是您的“Hello World"示例: from PyQt4 import QtGui, QtCore类窗口(QtGui.QWidget):def __init__( ..
发布时间:2021-12-18 20:44:22 Python

PyQt:如何将停止信号发送到对象正在运行有条件的 while 循环的线程?

我正在做一些多线程.我有一个带有 work 方法的工作类,我将其发送到单独的 QThread 中.work 方法内部有一个有条件的 while 循环.我希望能够向工作对象发送信号以停止它(将 _running 条件更改为 false).这将导致 while 循环退出,并从工作对象(连接到工作线程的退出槽)发送完成信号. 错误条件通过信号发送到工作对象,但从未收到,我认为这是因为 while ..
发布时间:2021-12-09 17:16:27 其他开发

Qt: SIGNAL, SLOT 宏声明

可能的重复: 是否可以看到 Q_SIGNALS、Q_SLOT、SLOT()、SIGNAL() 宏的定义吗?(Qt) 我在 Google 上找不到 Qt 中宏、SIGNAL 和 SLOT 的声明. 当我们说,connect(button1, SIGNAL(clicked()), this, SLOT(slotButton1())); 我想知道,突出显示的宏接受哪些各种参数? ..
发布时间:2021-12-09 17:13:48 其他开发

Qt:插槽返回值的含义?

根据文档,插槽的返回值没有任何意义. 然而在生成的 moc 代码中,我看到如果一个插槽返回一个值,这个值用于某些东西.知道它有什么作用吗? 这是我所谈论的一个例子.这是取自 moc 生成的代码.'message' 是一个不返回任何内容的槽,'selectPart' 被声明为返回 int. case 7: message((*reinterpret_cast(_a[1])),(*reint ..
发布时间:2021-12-09 17:09:13 C/C++开发

Qt 信号和插槽对象断开连接?

我想知道如果我破坏了信号发射对象,是否需要断开信号和插槽的连接.下面是一个例子: QAudioOutput * audioOutput = new QAudioOutput(format,mainWindow);连接(音频输出,信号(stateChanged(QAudio::State)),这个,插槽(stateChanged(QAudio::State)));删除音频输出;audioOutpu ..
发布时间:2021-12-09 17:07:06 其他开发

信号和插槽是如何在引擎盖下实现的?

这个问题已经在这个论坛上问过了,但我不明白这个概念. 我正在阅读,似乎信号和槽是使用函数指针实现的,即信号是一个大函数,它在内部调用所有连接的槽(函数指针).这样对吗?而生成的moc文件在整个故事中的作用是什么?我不明白信号函数如何知道要调用哪些插槽,即哪些插槽连接到该信号. 感谢您的时间 解决方案 Qt 以类似于解释型语言的方式实现这些东西.IE.它构造符号表,将信号名称映射 ..
发布时间:2021-12-09 17:04:59 其他开发

大量使用信号和插槽会影响应用程序性能吗?

问题只是出于教育目的: 在两个对象(例如两个线程)之间使用 30-50 对或更多信号槽对是否会影响应用程序性能、运行时间或响应时间? 解决方案 首先,你应该不要在 QThreads 中放置任何插槽.除了重新实现 run 方法和私有方法(不是信号!)之外,QThreads 并不是真的要派生出来. QThread 在概念上是一个线程控制器,而不是一个线程本身.在大多数情况下,您应该 ..
发布时间:2021-12-09 17:00:05 其他开发

Qt“私人插槽:"这是什么?

我知道如何使用它,但它的语法让我很困扰.什么是“私人插槽:"在做什么? 我以前从未在类定义中看到 private 关键字和 : 之间的东西.这里有什么奇特的 C++ 魔法吗? 这里的例子: #include 类计数器:公共 QObject{Q_OBJECT民众:Counter() { m_value = 0;}int value() const { return m_value;} ..
发布时间:2021-12-09 16:59:35 C/C++开发

等待信号

我正在开发一个将文件内容上传到服务器的应用程序. 要将文件上传到服务器,我使用了“QNetworkAccessManager"类.由于它以异步方式工作,因此我通过使用 QEventLoop 将其更改为以同步方式工作. 类文件传输{民众 :QNetworkAccessManager mNetworkManager;无效上传(QNetworkRequest 请求,QIODevice *data ..
发布时间:2021-12-09 16:54:45 其他开发

QMetaObject::connectSlotsByName: 没有匹配的信号

我设置了一个QT菜单,它自动连接到动作函数on_actionOpen_triggered().后来我想将文件名字符串传递给这个函数,以便在特殊情况下手动调用这个函数.所以我将函数签名更改为 on_actionOpen_triggered( const char *filename_in ).修改后程序运行良好,但终端报错, QMetaObject::connectSlotsByName: o ..
发布时间:2021-12-09 16:52:42 C/C++开发

Qt 信号可以返回一个值吗?

Boost.Signals 允许 各种策略使用槽的返回值来形成信号的返回值.例如.将它们相加,形成一个 vector,或者返回最后一个. 常识(在 Qt 文档[编辑: 以及对这个问题的一些答案] 中表达)是 Qt 信号不可能做到这一点. 但是,当我在以下类定义上运行 moc 时: class Object : public QObject {Q_OBJECT民众:显式对象( QObj ..
发布时间:2021-12-09 16:51:12 C/C++开发

确定连接到 Qt 中给定槽的信号

我已经将自己注入到一个 Qt 应用程序中,我试图找出给定插槽连接到哪些信号,但找不到任何有关执行此操作的信息.是否有一种开箱即用的机制?如果是这样,这是否暴露于 QtScript?(如果没有,我可以很容易地包装它.) 如果没有这种机制,添加它的最佳方法是什么?我不能在简单的挂钩之外操作现有的应用程序,但我可以挂钩 QObject::connect 并自己存储连接,只是不确定这是否是最好的方法 ..
发布时间:2021-12-09 16:41:15 其他开发

QT:模板化 Q_OBJECT 类

是否有可能有一个从 QObject 继承的模板类(并且在它的声明中有 Q_OBJECT 宏)? 我想为插槽创建类似适配器的东西,它可以做一些事情,但插槽可以接受任意数量的参数(参数数量取决于模板参数). 我刚刚尝试这样做,但出现链接器错误.我猜 gmake 或 moc 没有在这个模板类上被调用.有没有办法做到这一点?也许通过显式实例化模板? 解决方案 混合模板和 Q_OBJEC ..
发布时间:2021-12-09 16:26:11 C/C++开发

如何在Qt中发出跨线程信号?

Qt 文档声明信号和槽可以direct、queued 和auto. 它还指出,如果拥有插槽的对象“生活"在与拥有信号的对象不同的线程中,则发出此类信号就像发布消息一样 - 信号发射将立即返回,并且将在目标线程的事件循环中调用插槽方法. 不幸的是,文档没有指明“lives"代表什么,也没有可用的示例.我尝试了以下代码: main.h: class CThread1 : publi ..
发布时间:2021-12-09 16:22:29 C/C++开发