zhiyiYo / PyQt-Fluent-Widgets

A fluent design widgets library based on C++ Qt/PyQt/PySide. Make Qt Great Again.
https://qfluentwidgets.com
GNU General Public License v3.0
4.99k stars 464 forks source link

对话框偶尔报错 QPainter::begin #867

Closed zhiyiYo closed 1 month ago

Zzaphkiel commented 1 month ago

同样遇到问题,测试发现如果对话框中包含有滚动条的组件(包括 ScrollArea,或有较长文本的 TextEdit)就会报错。

最小复现代码

class CustomMessageBox(MessageBoxBase):
    def __init__(self, parent=None):
        super().__init__(parent=parent)

        self.scrollArea = ScrollArea()
        self.scrollWidget = QWidget()

        # 让 widget 比 scrollArea 更高,以显示纵向滚动条
        self.scrollWidget.setFixedHeight(300)
        self.scrollArea.setFixedHeight(200)

        # 如果没有滚动条显示就不会报错:
        # self.scrollWidget.setFixedHeight(150)
        # self.scrollArea.setFixedHeight(200)

        self.scrollArea.setWidget(self.scrollWidget)
        self.viewLayout.addWidget(self.scrollArea)

报错信息

在关闭对话框后,控制台输出报错信息:

QPainter::begin: A paint device can only be painted by one painter at a time.
QPainter::translate: Painter not active

环境信息

zhiyiYo commented 1 month ago

可能得取消滚动条的透明特效

zhiyiYo commented 1 month ago

已修复此问题