Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PyQt/Qt:如何临时重写QTextEdit的paintEvent()方法?(我做错了什么??)_Qt_Pyqt - Fatal编程技术网

PyQt/Qt:如何临时重写QTextEdit的paintEvent()方法?(我做错了什么??)

PyQt/Qt:如何临时重写QTextEdit的paintEvent()方法?(我做错了什么??),qt,pyqt,Qt,Pyqt,我试图在QTextEdit的视口中临时显示QWebPage。以下是我的程序中的相关代码: class Editor(QTextEdit): def __init__(self): super(Editor, self).__init__() self.webpage = QWebPage(self) self.paintwebpage = False def showWebPage(self, html): sel

我试图在QTextEdit的视口中临时显示QWebPage。以下是我的程序中的相关代码:

class Editor(QTextEdit):
    def __init__(self):
        super(Editor, self).__init__()
        self.webpage = QWebPage(self)
        self.paintwebpage = False

    def showWebPage(self, html):
        self.webpage.mainFrame().setHtml(html)
        self.paintwebpage = True
        self.update()

    def hideWebPage(self):
        self.paintwebpage = False
        self.update()

    def paintEvent(self, event):
        if self.paintwebpage:
            self.webpage.setViewportSize(self.viewport().size())
            painter = QPainter(self.viewport())
            self.webpage.mainFrame().render(painter)
            painter.end()
        else:
            super(Editor, self).paintEvent(event)
而且它从来都不起作用。我尝试过很多变化,包括告诉它要绘制的矩形,或者先绘制图像,然后再绘制图像,等等。它总是在视口中奇怪的位置显示网页的一两行。为什么我不能让它从0,0覆盖整个视口?我哪里做错了


[我想在编辑器中显示html代码的预览,而不需要多个占用空间的小部件;例如,当用户按下某个按钮时,视图将临时翻转到光标附近的html预览。]

您可以使用一个按钮,只需交换小部件,而不必重载paintEvent。
这可能是一个更简单的问题解决方案,因为只需一次调用就可以交换可见的小部件。

您可以使用一个简单的方法来交换小部件,而不是重载paintEvent。
这可能是一个更简单的问题解决方案,因为只需一次调用即可交换可见小部件。

这是个好主意,我不知道有这样的小部件。(虽然我仍然想知道我做错了什么,这样我可以更好地学习如何使用绘画事件来绘制小部件。)这是个好主意,我不知道有这样的小部件。(尽管我仍然想知道我做错了什么,所以我可以更好地学习如何使用绘制事件来绘制小部件。)