Qt基于事件驱动的编程.通常,当您开始构建窗口小部件时,您要做的就是通过随后经过处理的信号向接收器窗口小部件提供信息.您不想显式地知道子窗口小部件,也不希望在父窗口小部件上调用方法(这种情况并非总是如此,但是最好避免).
我将在这里发布一些没有UI文件的示例,但是假设您可以使用Designer构建相同的小部件并以相同的方式工作…
testwidget.py
from PyQt4 import QtGui, QtCore
class TestWidget(QtGui.QWidget):
textSaved = QtCore.pyqtSignal(str)
def __init__( self, parent = None ):
super(TestWidget, self).__init__(parent)
# create the ui (or load it)
self.__edit = QtGui.QTextEdit(self)
self.__button = QtGui.QPushButton(self)
self.__button.setText('Save')
layout = QtGui.QVBoxLayout()
layout.addWidget(self.__edit)
layout.addWidget(self.__button)
self.setLayout(layout)
# create connections
self.__button.clicked.connect(self.emitTextSaved)
def emitTextSaved( self ):
# allow Qt's blocking of signals paradigm to control flow