qt中通常有兩種型別的小部件介面。乙個是檢視版本,另乙個是小部件版本(繼承檢視)。最容易使用的是widget版本,對於您似乎正在嘗試做的事情,我建議您這樣做。在
另外,雖然你可以用你以前的方式來做軟體,但通常遵循更常見的約定會更好。我修改了您的**(包括構建主視窗的方式),讓小gui使用新方法(addcar)來將汽車類資訊新增到qtreewidget中:from pyqt5 import qtcore, qtgui, qtwidgets
import sys
#python data:
class car:
def __init__(self, name, color):
self.name = name
self.color = color
#window:
class ui_mainwindow(qtwidgets.qmainwindow):
def __init__(self):
super(ui_mainwindow, self).__init__()
self.setupui()
def setupui(self):
self.setobjectname("mainwindow")
self.resize(800, 600)
self.centralwidget = qtwidgets.qwidget(self)
self.centralwidget.setobjectname("centralwidget")
self.pushbutton = qtwidgets.qpushbutton(self.centralwidget)
self.pushbutton.setgeometry(qtcore.qrect(650, 510, 75, 23))
self.pushbutton.setobjectname("pushbutton")
# self.treeview = qtwidgets.qtreeview(self.centralwidget)
self.treeview = qtwidgets.qtreewidget(self.centralwidget)
self.treeview.setcolumncount(1)
self.treeview.setgeometry(qtcore.qrect(30, 20, 591, 481))
self.treeview.setobjectname("treeview")
self.lineedit = qtwidgets.qlineedit(self.centralwidget)
self.lineedit.setgeometry(qtcore.qrect(680, 120, 113, 20))
self.lineedit.setobjectname("lineedit")
self.label = qtwidgets.qlabel(self.centralwidget)
self.label.setgeometry(qtcore.qrect(630, 120, 46, 13))
self.label.setobjectname("label")
self.setcentralwidget(self.centralwidget)
self.menubar = qtwidgets.qmenubar(self)
self.menubar.setgeometry(qtcore.qrect(0, 0, 800, 21))
self.menubar.setobjectname("menubar")
self.setmenubar(self.menubar)
self.statusbar = qtwidgets.qstatusbar(self)
self.statusbar.setobjectname("statusbar")
self.setstatusbar(self.statusbar)
self.retranslateui()
qtcore.qmetaobject.connectslotsbyname(self)
def addcar(self, car, name):
item = qtwidgets.qtreewidgetitem([name])
child1 = qtwidgets.qtreewidgetitem(["type: " + car.name])
child2 = qtwidgets.qtreewidgetitem(["type: " + car.color])
item.addchild(child1)
item.addchild(child2)
self.treeview.addtoplevelitem(item)
def retranslateui(self):
self.setwindowtitle(_translate("mainwindow", "mainwindow"))
self.label.settext(_translate("mainwindow", "value"))
if __name__ == "__main__":
#create data
blue_car = car("family_car", "blue")
red_car = car("sports_car", "red")
#open ui
# mainwindow = qtwidgets.qmainwindow()
ui = ui_mainwindow()
# ui.setupui(mainwindow)
# add car object
ui.addcar(blue_car, "blue car")
ui.addcar(red_car, "red car")
ui.show()
結果是:
QT4 thread和QObject關係詳解
qthread從qobject派生。它發出訊號來表明執行緒開始了或結束了。並且也提供了幾個槽。更有趣的是,qobject可以在多個程中同時使用,可以發出訊號給另外執行緒的槽,以及向 活在 另外執行緒中的物件郵寄事件。以上之所以能發生,是因為每個初程都被允許擁有它自己的事件迴圈。qobject是可重入...
Qt原始檔和ui檔案的關係
1 新建空白類,然後繼承qwidget 此時會生成test.h和test.cpp兩個檔案,由於繼承了qwidget,但是並沒有繪製介面 onpaint裡draw.所以將這個類生成的物件show一下,介面時什麼都沒有的 2 新建qwidget介面子類 此時會生成3個檔案,test.h test.cpp...
Qt訊號和槽
qt將訊號和槽關聯起來的connect使用時需要注意帶相應的引數,否則會出現訊號發出後不能呼叫槽的問題,例子如下 發出訊號的宣告 signals void receiveddata uchar dat,uint len 接收訊號的槽宣告 private slots void getdata ucha...