浅尝pyqt(2)

来源:互联网 发布:换掉山本宽 知乎 编辑:程序博客网 时间:2024/05/18 00:18

站在巨人的肩膀上, 学了一点, 分享一下...

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 + yif __name__ == "__main__":    dialog = MyDialog()    dialog.connect(dialog, SIGNAL("signalSignature"), display)
结果显然就是输出3了。我也不会很会表达,平时也就这样组合着用。


先水到这里吧……

原创粉丝点击