滄浪企業(yè)建設(shè)網(wǎng)站價(jià)格營銷軟文范例大全100
我的實(shí)現(xiàn)方法是,先用qt designer寫好界面,如下圖:
接著將其生成的ui文件編譯成為py文件。
找到里面這幾行代碼:
self.textEdit = QTextEdit(self.centralwidget)self.textEdit.setObjectName(u"textEdit")self.textEdit.setGeometry(QRect(53, 410, 490, 131))
把它改成
self.myTextEdit = MyTextEdit(self.centralwidget)
self.myTextEdit.setObjectName(u"myTextEdit")
self.myTextEdit.setGeometry(QRect(53, 410, 490, 131))
這里面的myTextEdit你可以替換成任意自己喜歡的名字,后文不再贅述。
那四個(gè)數(shù)字是布局的數(shù)字,因?yàn)橹霸谠O(shè)計(jì)器里面已經(jīng)調(diào)好了,所以數(shù)字原封不動(dòng)抄下來。
接著在這個(gè)關(guān)于ui的python文件中頂上(也就是導(dǎo)入模塊下方,其他類上方的位置)的位置加上自定義控件的類的代碼:
class MyTextEdit(QTextEdit):return_pressed = Signal()#為什么要繼承后重寫?因?yàn)樵瓉淼目丶恢С謾z測回車鍵事件。按了回車會(huì)默認(rèn)換行。def __init__(self,parent=None):super().__init__(parent)def keyPressEvent(self, event):QTextEdit.keyPressEvent(self,event)if event.key() == Qt.Key_Return:if self.toPlainText()!='':#非空才觸發(fā)信號(hào),為空的時(shí)候觸發(fā)了沒意義。self.return_pressed.emit()
最頂上部分從源代碼導(dǎo)入框架的位置,要加上這個(gè)
from PySide6.QtCore import Signal
這是因?yàn)樵瓉淼腢I文件里面沒有引入信號(hào),這里需要手動(dòng)添加一下。
ui文件末尾也需要把retranslateUi里面的相關(guān)名字改一下,把
self.textEdit.setHtml
改成
self.myTextEdit.setHtml
注意:setHtml后面還有內(nèi)容,只是太長了,我懶得寫,因?yàn)楹竺鏇]啥變化,就沒必要列出來。
以上這部分是ui.py中要改的代碼。
接著回到主入口的代碼(也就是要點(diǎn)擊運(yùn)行程序的那個(gè)代碼)
在初始化主窗口的代碼中,加上這個(gè):
self.ui.myTextEdit.return_pressed.connect(self.xxxslot)
這里面的self.xxxslot是任意需要激活的槽函數(shù)
這個(gè)代碼整體運(yùn)行的邏輯是:一旦我在輸入框里按了回車,就會(huì)釋放一個(gè)return_pressed的信號(hào),而這個(gè)信號(hào)會(huì)被相應(yīng)的槽捕獲,從而執(zhí)行槽函數(shù)里面的內(nèi)容,我這里就是簡單地把輸入框中的文本發(fā)送出去,讓別的代碼進(jìn)行處理。