qt和python關係 Qt和Python D

2021-10-18 16:08:23 字數 2946 閱讀 9692

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...