我正在尝试在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预览。
发布于 2011-12-15 20:15:00
您可以使用QStackedWidget
并交换小部件,而不是重载paintEvent。对于这个问题,这可能是一种更简单的解决方案,因为只需调用一次setCurrentIndex
来交换可见的小部件。
https://stackoverflow.com/questions/8519344
复制相似问题