signals-slots相关内容
假设我有一个对象并希望在发出 PyQt 信号时执行其中的一个方法.并假设我希望它使用信号未传递的参数来执行此操作.所以我创建了一个 lambda 作为信号的槽: class MyClass(object):def __init__(self, 模型):model.model_changed_signal.connect(lambda: self.set_x(model.x(),silent=Tr
..
我们有一个 QCheckBox 对象,当用户检查它或删除检查时,我们想要调用一个函数,因此我们将我们的函数连接到 stateChanged ( int state ) 信号.另一方面,根据某些情况,我们也在代码中改变了 QCheckBox 对象的状态,这会导致不需要的信号. 在某些情况下有什么办法可以防止发射信号吗? 解决方案 您可以使用 clicked 信号,因为它仅在用户实际单击
..
我刚刚开始使用 Qt,并试图获得模型-视图-控制器设计模式的简化、有效示例. 到目前为止,我已经能够使用信号和插槽将按钮等基本小部件连接到 QLabel,并在单击/释放按钮时修改视图.请参阅下面的代码以获取该示例的工作示例(在 MainWindow 类中实现). 我正在尝试定义一个类,在本例中为 Game,它将成为我的模型.我希望 Game 拥有我整个应用程序的所有数据和业务规则.我不
..
某些小部件将允许我执行以下操作: self.widget.clicked.connect(on_click) 但是在做: self.widget.keyPressEvent.connect(on_key) 将失败说对象没有属性“connect". 我知道对小部件进行子类化并重新实现 keyPressEvent 方法将使我能够响应事件.但是我怎样才能.connect() 到键盘事件之后
..
我想在 PyQt 中实现一个简单的按钮,单击时会打印“Hello world".我该怎么做? 我是 PyQt 的真正新手. 解决方案 如果您是 PyQt4 的新手,PyQt Wiki 帮助您入门. 但与此同时,这是您的“Hello World"示例: from PyQt4 import QtGui, QtCore类窗口(QtGui.QWidget):def __init__(
..
我正在做一些多线程.我有一个带有 work 方法的工作类,我将其发送到单独的 QThread 中.work 方法内部有一个有条件的 while 循环.我希望能够向工作对象发送信号以停止它(将 _running 条件更改为 false).这将导致 while 循环退出,并从工作对象(连接到工作线程的退出槽)发送完成信号. 错误条件通过信号发送到工作对象,但从未收到,我认为这是因为 while
..
可能的重复: 是否可以看到 Q_SIGNALS、Q_SLOT、SLOT()、SIGNAL() 宏的定义吗?(Qt) 我在 Google 上找不到 Qt 中宏、SIGNAL 和 SLOT 的声明. 当我们说,connect(button1, SIGNAL(clicked()), this, SLOT(slotButton1())); 我想知道,突出显示的宏接受哪些各种参数?
..
根据文档,插槽的返回值没有任何意义. 然而在生成的 moc 代码中,我看到如果一个插槽返回一个值,这个值用于某些东西.知道它有什么作用吗? 这是我所谈论的一个例子.这是取自 moc 生成的代码.'message' 是一个不返回任何内容的槽,'selectPart' 被声明为返回 int. case 7: message((*reinterpret_cast(_a[1])),(*reint
..
我想知道如果我破坏了信号发射对象,是否需要断开信号和插槽的连接.下面是一个例子: QAudioOutput * audioOutput = new QAudioOutput(format,mainWindow);连接(音频输出,信号(stateChanged(QAudio::State)),这个,插槽(stateChanged(QAudio::State)));删除音频输出;audioOutpu
..
这个问题已经在这个论坛上问过了,但我不明白这个概念. 我正在阅读,似乎信号和槽是使用函数指针实现的,即信号是一个大函数,它在内部调用所有连接的槽(函数指针).这样对吗?而生成的moc文件在整个故事中的作用是什么?我不明白信号函数如何知道要调用哪些插槽,即哪些插槽连接到该信号. 感谢您的时间 解决方案 Qt 以类似于解释型语言的方式实现这些东西.IE.它构造符号表,将信号名称映射
..
问题只是出于教育目的: 在两个对象(例如两个线程)之间使用 30-50 对或更多信号槽对是否会影响应用程序性能、运行时间或响应时间? 解决方案 首先,你应该不要在 QThreads 中放置任何插槽.除了重新实现 run 方法和私有方法(不是信号!)之外,QThreads 并不是真的要派生出来. QThread 在概念上是一个线程控制器,而不是一个线程本身.在大多数情况下,您应该
..
我知道如何使用它,但它的语法让我很困扰.什么是“私人插槽:"在做什么? 我以前从未在类定义中看到 private 关键字和 : 之间的东西.这里有什么奇特的 C++ 魔法吗? 这里的例子: #include 类计数器:公共 QObject{Q_OBJECT民众:Counter() { m_value = 0;}int value() const { return m_value;}
..
我正在开发一个将文件内容上传到服务器的应用程序. 要将文件上传到服务器,我使用了“QNetworkAccessManager"类.由于它以异步方式工作,因此我通过使用 QEventLoop 将其更改为以同步方式工作. 类文件传输{民众 :QNetworkAccessManager mNetworkManager;无效上传(QNetworkRequest 请求,QIODevice *data
..
以下链接示例:http://developer.kde.org/documentation/books/kde-2.0-development/ch03lev1sec3.html #include #include #include 使用命名空间标准;类 MyWindow:公共 QWidget{Q_OBJECT//启用槽和信号民众:我的窗口();私人插槽:void slotButton1();v
..
我设置了一个QT菜单,它自动连接到动作函数on_actionOpen_triggered().后来我想将文件名字符串传递给这个函数,以便在特殊情况下手动调用这个函数.所以我将函数签名更改为 on_actionOpen_triggered( const char *filename_in ).修改后程序运行良好,但终端报错, QMetaObject::connectSlotsByName: o
..
Boost.Signals 允许 各种策略使用槽的返回值来形成信号的返回值.例如.将它们相加,形成一个 vector,或者返回最后一个. 常识(在 Qt 文档[编辑: 以及对这个问题的一些答案] 中表达)是 Qt 信号不可能做到这一点. 但是,当我在以下类定义上运行 moc 时: class Object : public QObject {Q_OBJECT民众:显式对象( QObj
..
我已经将自己注入到一个 Qt 应用程序中,我试图找出给定插槽连接到哪些信号,但找不到任何有关执行此操作的信息.是否有一种开箱即用的机制?如果是这样,这是否暴露于 QtScript?(如果没有,我可以很容易地包装它.) 如果没有这种机制,添加它的最佳方法是什么?我不能在简单的挂钩之外操作现有的应用程序,但我可以挂钩 QObject::connect 并自己存储连接,只是不确定这是否是最好的方法
..
是否可以在没有接收器实例的情况下将信号连接到静态插槽? 像这样:connect(&object, SIGNAL(some()), STATIC_SLOT(staticFooMember())); Qt 文档中有一个带有 [static slot] 属性的 QApplication::closeAllWindows() 函数.文档中有一个使用它的示例: exitAct = new QA
..
是否有可能有一个从 QObject 继承的模板类(并且在它的声明中有 Q_OBJECT 宏)? 我想为插槽创建类似适配器的东西,它可以做一些事情,但插槽可以接受任意数量的参数(参数数量取决于模板参数). 我刚刚尝试这样做,但出现链接器错误.我猜 gmake 或 moc 没有在这个模板类上被调用.有没有办法做到这一点?也许通过显式实例化模板? 解决方案 混合模板和 Q_OBJEC
..
Qt 文档声明信号和槽可以direct、queued 和auto. 它还指出,如果拥有插槽的对象“生活"在与拥有信号的对象不同的线程中,则发出此类信号就像发布消息一样 - 信号发射将立即返回,并且将在目标线程的事件循环中调用插槽方法. 不幸的是,文档没有指明“lives"代表什么,也没有可用的示例.我尝试了以下代码: main.h: class CThread1 : publi
..