我正在使用PySide 1.1.2开发一个应用程序,这是在新风格信号和插槽集成之前。我对大多数自定义信号没有任何问题,除了那些接受unicode或str类型的信号。没有参数或其他类型的那些工作得很好,但是使用unicode或str参数,我得到错误:“TypeError:元函数(包括信号)上使用的值类型需要在meta类型上注册:str”on the emit言。
语句示例(这些当然是在不同的类中):
self.emit(QtCore.SIGNAL('setCountType(str)'), self.countType)
self.connect(self.parent, QtCore.SIGNAL('setCountType(str)'), self.setCountType)
# part of a class that inherits from QWidget
def setCountType(self, value):
self.countType = value
emit语句是抛出错误的语句。
答案 0 :(得分:1)
PySide 1.1.2支持新风格。就我而言,使用“字符串”的信号可以完美地工作。 如果您需要帮助,请查看:http://qt-project.org/wiki/Signals_and_Slots_in_PySide
一个例子:
import sys
from PySide.QtGui import *
from PySide.QtCore import *
class Window(QMainWindow):
signal = Signal(str)
def __init__(self, parent=None):
super(Window, self).__init__(parent)
self.button = QPushButton()
self.button.setText("Test")
self.setCentralWidget(self.button)
self.button.clicked.connect(self.button_clicked)
self.signal.connect(self.print_text)
@Slot()
def button_clicked(self):
print('button clicked')
self.signal.emit("It works!")
@Slot(str)
def print_text(self, text: str):
print(text)
if __name__ == "__main__":
app = QApplication(sys.argv)
window = Window()
window.show()
app.exec_()
sys.exit(0)