[英]QPaintEvent disables QLineEdit when painting on stackedWidget - PyQt
我試圖在我的 GUI 中堆疊小部件的頁面之一上繪制圖表。 我有一個這樣的畫家課:
class Painter(QtGui.QWidget):
def __init__(self):
super(Painter, self).__init__()
def paintEvent(self, e):
qp = QtGui.QPainter(self)
self.draw_lines(qp)
def draw_lines(self, qp):
pen = QtGui.QPen(QtCore.Qt.blue, 2, QtCore.Qt.SolidLine) # draw graph
qp.setPen(pen)
qp.drawLine(80, 209, 150, 209)
qp.drawLine(150, 209, 220, 60)
qp.drawLine(430, 60, 500, 209)
qp.drawLine(500, 209, 570, 209)
qp.drawLine(220, 60, 430, 60)
然后我有一個類,其中包含我調用 Painter 類的堆疊小部件上的一個頁面:
# create page 2
self.page_2 = QtGui.QWidget()
self.main_layout = QtGui.QGridLayout()
self.page_2.setLayout(self.main_layout)
# create group box
self.group_box = QtGui.QGroupBox(self.page_2)
# add plot diagram
self.PaintPanel = diagram.Painter()
self.PaintPanel.close()
self.main_layout.addWidget(self.PaintPanel, 0, 0)
# set text field
self.text = QtGui.QLineEdit(self.group_box)
self.text.setGeometry(QtCore.QRect(160, 330, 41, 21))
self.stackedWidget.addWidget(self.page_2)
我的問題是當我添加 Painter 類小部件時, QLineEdit 變為非活動狀態(阻止/凍結?)。 沒有這個, QLineEdit 工作正常。 我想知道為什么會這樣以及如何解決這個問題? 任何幫助都感激不盡。 謝謝
您的 Painter 是一個 QWidget,它位於您的 QLineEdit 之上,因此 Painter 獲取所有鼠標事件。 如果您想在 QLineEdit 之上繪畫,我建議您繼承 QLineEdit 並覆蓋其繪畫方法。
我還想你可以讓 Painter 成為一個事件過濾器而不是 QWidget 並攔截你的 QLineEdit 繪畫事件,但我相信這將首先讓 Painter 繪畫,然后是 QLineEdit。 這可能不是你想要的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.