2
我已經使用Qt Designer
在PyQt4中創建了一個嚮導。在嚮導的一個頁面上,存在QTextBrowser
類型的「text_Browser」對象。我正在使用函數QTextBrowser.append()
根據一些處理向其添加文本。如何在PyQt嚮導中顯示頁面後連接信號。
我希望在顯示此頁面後執行追加功能,而不是將動作(信號)連接到上一頁上的下一個或任何其他按鈕。我如何去做這件事?
我已經使用Qt Designer
在PyQt4中創建了一個嚮導。在嚮導的一個頁面上,存在QTextBrowser
類型的「text_Browser」對象。我正在使用函數QTextBrowser.append()
根據一些處理向其添加文本。如何在PyQt嚮導中顯示頁面後連接信號。
我希望在顯示此頁面後執行追加功能,而不是將動作(信號)連接到上一頁上的下一個或任何其他按鈕。我如何去做這件事?
您可以在QTextBrowser中重新實現showEvent
。
# from PySide import QtGui
from PyQt4 import QtGui
class CustomTextBrowser(QtGui.QTextBrowser):
'''Reimplment show event to append text'''
def showEvent(self, event):
# do stuff here
#self.append('This random text string ')
event.accept()
請予以警告,這將小部件顯示每次追加到QTextBrowser的字符串,這意味着切換此控件的可見性可能會導致意外行爲的其他的Qt事件。由於這個原因,使用信號和插槽是可取的,但由於您明確使用而不是來使用信號/插槽,因此這裏是showEvent
上的QEvent版本,並帶有公正的警告。
一種解決方案,以避免附加文字多次是設置一個實例變量,和切換值小窗口已經顯示後:
# from PySide import QtGui
from PyQt4 import QtGui
class CustomTextBrowser(QtGui.QTextBrowser):
'''Reimplment show event to append text'''
def __init__(self, *args, **kwds):
super(CustomTextBrowser, self).__init__(*args, **kwds)
self._loaded = False
def showEvent(self, event):
if not self._loaded:
# do stuff here
#self.append('This random text string ')
self._loaded = True
event.accept()
另一種解決方案將是使用信號/槽策略爲或者覆蓋__init__
以自動在您的子類中附加文本。信號/插槽機制可能是Qt程序員最直觀,最合理的。