首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PyQt/Qt:如何临时覆盖QTextEdit的paintEvent()方法?(我做错了什么??)

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

Stack Overflow用户
提问于 2011-12-15 19:27:25
回答 1查看 865关注 0票数 0

我正在尝试在QTextEdit的视区中临时显示QWebPage。下面是我的程序中的相关代码:

代码语言:javascript
运行
复制
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预览。

EN

回答 1

Stack Overflow用户

发布于 2011-12-15 20:15:00

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8519344

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档