【发布时间】:2014-12-07 19:25:47
【问题描述】:
我们正在尝试使用 Mac OSX Yosemite 半透明效果制作 QMainWindow。我们正在使用 PyQt,但问题是 Qt 问题。到目前为止,我们已经尝试过,它总是完全透明或完全不透明(就像普通窗口一样)。如果我们打开 Qt.WA_TranslucentBackground,窗口背景就会变成 100% 完全透明。
此外,我们在其上显示的 QGraphicsView 会在您滚动时留下痕迹。鼠标输入也“穿过”透明部分——点击图形视图的透明部分将注册为点击它后面的窗口。使用任何自定义背景颜色设置样式表将无效。如果我们关闭它,窗口仍然是不透明的。然后我们可以使用样式表更改背景颜色,但它仍然是不透明的。
打开和关闭 WA_FramelessWindowHint 似乎也无法解决任何问题。 setAutoFillBackground() 也没有。你知道如何制作带有 Yosemite 半透明效果的窗户吗?
这是一个用于测试的示例 Python 程序:-
# Attempt at Mac OSX Translucency (example code)
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
Qt = QtCore.Qt
class ExampleMainWindow(QtWidgets.QMainWindow):
def __init__(self, parent=None):
super().__init__(parent)
self.testWidget = QtWidgets.QLabel('Test label, which should be transparent')
# Make sure the testWidget is transparent
self.testWidget.setStyleSheet('background: transparent')
self.testWidget.setAttribute(Qt.WA_TranslucentBackground, True)
self.testWidget.setAutoFillBackground(True)
self.setStyleSheet('background: rgba(255, 255, 255, 0.8)')
self.setAttribute(Qt.WA_TranslucentBackground, True)
self.setAutoFillBackground(True)
#self.setWindowFlags(Qt.FramelessWindowHint) # Doesn't seem to help
self.setCentralWidget(self.testWidget)
def main():
global app, exWindow
app = QtWidgets.QApplication(sys.argv)
exWindow = ExampleMainWindow()
exWindow.show()
exitcodesys = app.exec_()
app.deleteLater()
sys.exit(exitcodesys)
if __name__ == '__main__': main()
【问题讨论】:
-
代码有时值千字。
-
我不明白如何将代码嵌入到帖子中,所以在这里贴一下:bpaste.net/show/b0fbe94e90ce
-
格式化代码的一些技巧:stackoverflow.com/help/formatting.
-
所以帮助我完成这个项目的人制作了一个示例 Python 程序来测试它。这是代码:bpaste.net/show/8c1abf7c0dfc 这是输出:dropbox.com/s/ger3m15humuyymx/… 这是我们正在尝试使用的代码类型的一个示例——只是我们希望它具有优胜美地的“磨砂玻璃”外观。跨度>
标签: macos qt translucency