簡體   English   中英

QPaintEvent 在stackedWidget 上繪畫時禁用QLineEdit - PyQt

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM