目前pyqt5可以實現c++/qt的幾乎全部邏輯,現在做一下兩者的比較,方便對pyqt的理解。
類呼叫ui檔案編譯
簡單自定義類的**結構
訊號槽使用
#include
intmain
(int argc,
char
*ar**)
import sys
if __name__ ==
'__main__'
: w = qwidget(
)# 建立qwidget物件
w.show(
)# 顯示qwidget))
c++/qt
pyqt5
使用uic.exe生成ui_***. h
使用pyuic5.exe生成對應的py檔案
在qtcreator中建立乙個ui檔案,這裡直接使用自帶的預設form template,得到"dialog.ui"
使用qtcreate進行編譯
// 根據ui檔案自動生成ui_dialog類,並實現setupui的方法來進行介面排布。
class
ui_dialog
// setupui
void
retranslateui
(qdialog *dialog)
// retranslateui
};
使用pyqt5進行編譯
cd命令到「dialog.ui」檔案路徑下,
使用命令 pyuic5.exe -o ui_dialog.py dialog.ui
命令是將dialog.ui檔案利用pyuic5.exe編譯,並生成ui_dialog.py檔案,該檔案會自動生成ui_dialog的類。
開啟ui_dialog.py,可以看到經過編譯後的**
from pyqt5 import qtcore, qtgui, qtwidgets
class
ui_dialog
(object):
defsetupui
(self, dialog)
: dialog.setobjectname(
"dialog"
) dialog.resize(
400,
300)
self.buttonbox = qtwidgets.qdialogbuttonbox(dialog)
self.buttonbox.setgeometry(qtcore.qrect(30,
240,
341,32)
) self.buttonbox.setorientation(qtcore.qt.horizontal)
self.buttonbox.setstandardbuttons(qtwidgets.qdialogbuttonbox.cancel|qtwidgets.qdialogbuttonbox.ok)
self.buttonbox.setobjectname(
"buttonbox"
) self.retranslateui(dialog)
self.buttonbox.accepted.connect(dialog.accept)
self.buttonbox.rejected.connect(dialog.reject)
qtcore.qmetaobject.connectslotsbyname(dialog)
defretranslateui
(self, dialog)
: dialog.setwindowtitle(_translate(
"dialog"
,"dialog"
))
#include
#include
"ui_mywidget.h"
class
mywidget
:public qwidget
;mywidget::
mywidget
(qwidget *parent)
:qmainwindow
(parent)
form ui_mywidget import ui_mywidget
class
mywidget
(qwidget)
def__init__
(self)
:super()
.__init__(self,parent=none)
self.__ui = ui_mywidget(
)# 建立介面類作為私有函式
self.__ui.setupui(self)
# 建立ui介面
if __name__ ==
'__main__'
:# 測試**,在執行當前py檔案時會進入
w = mywidget(
)# 建立mywidget物件
w.show(
)# 顯示qwidget))
專案c++/qt
pyqt5
訊號定義
包含兩個訊號。1、訊號帶乙個str引數。2、訊號帶int和str兩個引數
訊號利用pyqtsignal宣告,並進行引數宣告
槽定義
在普通成員函式上增加q_slots標識
使用裝飾器(無過載可不需要)來修飾成員函式
連線qobject::connect(sender,signal(signal()),reciever,slot(slot()))
sender.signal[param].connect(reciever.slot)
此處只簡單對比下兩邊訊號槽的語法,後續章節再深入下pyqt訊號槽的語法及應用。
typedef與define的一些比較
1 define是預處理指令,在編譯預處理時進行簡單的替換,不作正確性檢查,不關含義是否正確照樣帶入,只有在編譯已被展開的源程式時才會發現可能的錯誤並報錯。例如 define pi 3.1415926 程式中的 area pi r r 會替換為3.1415926 r r 如果你把 define語句中...
C 與C 一些比較
1.在c 中不需要區分標頭檔案與實現檔案,c 為了和其他cpp中的函式方便的做互動不得不寫乙個標頭檔案來做型別宣告。2.c 語言本身提供了反射機制支援 而c 並不支援 像c 中propertygrid這樣的東西,在c 中實現也是乙個比較麻煩的事情 rpc這樣的東西在有反射系統的情況下,實現和使用都要...
web server的一些比較
一,lighttpd簡介 netcraft做的資料調查曾顯示,今年一月份全球使用lighttpd的 為170,000,二月份這個數字達到了7000,000,在短短的乙個月內驚人地增長了400 在這些 中,包括youtube wikipedia和meebo等。而且目前為止,使用lighttpd的 仍在...