站在巨人的肩膀上, 学了一点, 分享一下...
a) connect
s.connect(w, SIGNAL("signalSignature"), functionName)
s.connect(w, SIGNAL("signalSignature"), instance.methodName)
s.connect(w, SIGNAL("signalSignature"), instance, SLOT("slotSignature"))
功能简单的来说就是当w收到SIGNAL("signalSignature")信号是就执行后面的部分。signalSignature与slotSignature需要有相同的参数。
b)QGridLayout
比起QHBoxLayout(水平布局)和QVBoxLayout(垂直布局),我更喜欢用QGridLayout(方格布局), 更方便设计布局。
i)addWidget(w, r, c): 在r行c列添加一个固件w;
ii)addWidget(w, r, c, l, h): 在r行c列添加一个固件w,而且长l宽h;
iii)addLayout(l, r, c): 在r行c列添加一个布局;相同的,添加多两个参数之后与上面的类似;
P.S 这里的方格并不是严格意义上的一个一个方格,他会根据当前的固件和布局来划分所谓的方格行列。
c)QListWidget
展示字符串的固件
addItem(QString): 添加一项;
addItems(list): 添加多项;
count(): 字符串数;
takeItem(r): 删除第r项,r从0开始;
item(r): 第r项,返回的是QListWidgetItem类型, 而且可以修改值;
item(r).text(): 返回第r项的QString值;
item(r).setText(QString): 修改第r项的值;
currentItem(): 当前项,同样返回的是QListWidgetItem类型;
currentRow(): 返回当前行(int), 即第几项。
……(其实还有很多方法,不过本人懂的不多)
d)emit
emit(SINGAL, ...) 传递一个信号及若干参数
class MyDialog(QDialog):
......
def accept(self)
self.emit(SIGNAL("signalSignature"), 1, 2)
def display(x, y):
print x + y
if __name__ == "__main__":
dialog = MyDialog()
dialog.connect(dialog, SIGNAL("signalSignature"), display)
结果显然就是输出3了。我也不会很会表达,平时也就这样组合着用。
先水到这里吧……