PySide QtCore.Signal帮助手册

简介:   本文主要是翻译了Signal的文档,感兴趣的同学,可以参见 PySide的官方文档。翻译不足之处,还请指正。  函数用法def connect (receiver)def disconnect (receiver)def emit (*args)  详细描述  Signal类提供了使用符合python语法习惯的方法来定义以及连接Qt信号。

  本文主要是翻译了Signal的文档,感兴趣的同学,可以参见 PySide的官方文档。翻译不足之处,还请指正。

  函数用法

def connect (receiver)
def disconnect (receiver)
def emit (*args)

  详细描述
  Signal类提供了使用符合python语法习惯的方法来定义以及连接Qt信号。

  PySide改造了PyQt的新的信号与槽方法,除了下面提到的特别情况,PySide的实现可以与PyQt 4.5实现功能兼容。

  使用QtCore.Signal()定义新信号
  PySide自动为Qt内置的信号定义了信号。使用QtCore.Signal()工厂方法定义新的信号为类的属性。

  QtCore.Signal()接受若干与信号签名相关的参数类型。每个类型可以是Python类型对象或者C++类型的字符串名称。同时,每个参数可以是类型参数的序列。本例中,每个序列定义了不同信号重载的签名。第一个重载被设置为默认。

  也可以选择性地提供一个参数 name 给QtCore.Signal(),其值可以设置信号的名称。信号发射时,将使用类属性的名字。

  下面,显示一系列定义信号的方法:

 
 
from PySide import QtCore

class Foo(QtCore.QObject):
# Define a new signal called 'trigger' that has no arguments.
trigger = QtCore.pyqtSignal()

def connect_and_emit_trigger(self):
# Connect the trigger signal to a slot.
self.trigger.connect(self.handle_trigger)

# Emit the signal.
self.trigger.emit()

def handle_trigger(self):
# Show that the slot has been called.
print " trigger signal received "

  新信号只应该在QObject子类中定义。

  使用这个方法定义的新信号将会自动添加入类的QMetaObject中。这意味着,它们将在Qt Designer中出现,而且也可以使用QMetaObject API反射获取。

  连接、断开以及发射信号
  信号与槽之间可以用Signal.connect()和Signal.disconnect()方法进行连接和断开,或者使用Signal.emit()方法发射信号。

  下面的代码演示如何定义、连接以及发射没有参数的信号

 
 
from PySide import QtCore

class Foo(QtCore.QObject):
# Define a new signal called 'trigger' that has no arguments.
trigger = QtCore.pyqtSignal()

def connect_and_emit_trigger(self):
# Connect the trigger signal to a slot.
self.trigger.connect(self.handle_trigger)

# Emit the signal.
self.trigger.emit()

def handle_trigger(self):
# Show that the slot has been called.
print " trigger signal received "

  下面则演示连接重载的信号

 
 
from PySide import QtGui

class Bar(QtGui.QComboBox):

def connect_activated(self):
# The PyQt documentation will define what the default overload is.
# In this case it is the overload with the single integer argument.
self.activated.connect(self.handle_int)

# For non-default overloads we have to specify which we want to
# connect. In this case the one with the single string argument.
# (Note that we could also explicitly specify the default if we
# wanted to.)
self.activated[str].connect(self.handle_string)

def handle_int(self, index):
print " activated signal passed integer " , index

def handle_string(self, text):
print " activated signal passed string " , text

  使用关键字参数连接信号
       在创建对象并想连接信号的时候,把槽作为关键字参数的值传递给构造函数。下面的代码实际上是等价的。

 
 
act = QtGui.QAction( " Action " , self)
act.triggered.connect(self.on_triggered)

act
= QtGui.QAction( " Action " , self, triggered = self.on_triggered)

  Signal.connect(receiver[, type=Qt.AutoConnection])
  在singal和receiver之间创立连接,receiver可以是Python函数,或者槽或信号。
  Signal.disconnect(receiver)
  断开singal与receiver间的连接。receiver同上。
  Signal.emit(*args)
  args是可选的参数序列,传递给任何已连接的槽。

目录
相关文章
使用QT的QProcess执行cmd命令【记录】
使用QT的QProcess执行cmd命令【记录】
1447 0
|
存储 数据管理 数据处理
Qt QStandardItemModel(1.超级详细用法)
本文详细的介绍了TextEdit控件的各种操作,例如:获取内容、输入控件字符、保持在最后一行添加(自动滚屏)、定时关闭、添加数据换行、向鼠标位置插入一行字符、设置字体颜色属性等操作。 本系列QT全面详解文章目前共有十五篇,本系列文章较为详细的讲述了QT控件的基础操作和使用,也谢谢大家的关注、点赞、收藏。
699 0
Qt QStandardItemModel(1.超级详细用法)
|
Linux Python
linux qt 项目中QProcess调用命令行命令执行python脚本
linux qt 项目中QProcess调用命令行命令执行python脚本
linux qt 项目中QProcess调用命令行命令执行python脚本
|
编译器 C++
Qt&Vtk-002-第一个VtkQt程序
本文将是Qt与Vtk结合的第一个程序,主要就是将Vtk与Qt结合,但是呢,也不完全算是Qt与Vtk结合的程序,这里并没有用到QVTKOpenglWidget,仅仅是用了Qt编译器,还可以说是纯C++的项目,只是没有用CMake来管理代码。
335 0
Qt&Vtk-002-第一个VtkQt程序
|
小程序 Unix Shell
每周一个 Python 模块 | signal
信号是 Unix 系统中常见的一种进程间通信方式(IPC),例如我们经常操作的 kill -9 pid,这里的 -9对应的就是 SIGKILL 信号,9 就是这个信号的编号,SIGKILL 是它的名称。 由于不同版本的 *nux 的实现会有差异,具体请参照系统 API,可以使用 man 7 signal 查看所有信号的定义。
406 0
|
编解码 API Python
Py之PyAutoGUI:python库之PyAutoGUI的简介、安装、使用方法
Py之PyAutoGUI:python库之PyAutoGUI的简介、安装、使用方法
Py之PyAutoGUI:python库之PyAutoGUI的简介、安装、使用方法
|
IDE 开发工具 Python
PyS“.NET研究”ide QtCore.Signal帮助手册
  本文主要是翻译了Signal的文档,感兴趣的同学,可以参见 PySide的官方文档。翻译不足之处,还请指正。   函数用法 def connect (receiver)def disconnect (receiver)def emit (*args)   详细描述  Signal类提供了使用符合python语法习惯的方法来定义以及连接Qt信号。
1037 2
|
Web App开发
PySide教程:第一个PySide应用
  PySide安装:请参考 http://www.meegoq.com/thread-1161-1-1.html   使用你已经安装了PySide,那么现在你应该已经拥有完整的PySide拷贝,并且可以使用Qt+Python的方式开发GUI应用程序。
1705 0
|
Python
PySide教程:PySide中使用Qt属性
  PySide提供了 Propery 函数定义一种属性,该属性可以同时作为Qt和Python的属性(我们知道,一般在Python下定义的属性,并不是Qt属性)。而这个属性的Setter和getter也可以用Python函数定义。
1155 0