我使用的是Qt Creator 4.5.2 (Qt 5.9.5,GCC 7.3.0 64位),运行在Ubuntu 18.04上。
我有一个QT MainWindow (a QWidget),它是QRectF(0,0,480,800)。在MainWindow上,有一个QFrame,它是QRectF(0,60,480,400)。我希望QFrame是完全透明的。换句话说,我希望看到QFrame框架后面的PC桌面上的显示,但不想看到QT MainWindow其他部分后面的桌面。
有可能吗?我用谷歌搜索了很多,但没有找到一个好的解决方案。
我试过了:
setStyleSheet("QFrame{border: None; background-color: transparent;}");或
setStyleSheet("background-color: transparent; QFrame{border: None; background-color: transparent;}");或
setStyleSheet("QFrame{border: None; background-color: rgba(0,0,0,100;}");这两个都不管用。
发布于 2020-05-01 05:52:54
这对我很有效
widget->setStyleSheet("background-color: transparent;");
widget->setWindowFlags(Qt::FramelessWindowHint); //No windowing
widget->setAttribute(Qt::WA_TranslucentBackground); // No background发布于 2020-05-01 18:06:42
当您将QFrame添加到QMainWindow并将透明背景设置为QFrame时,QMainWindow仍将使用某些颜色进行填充。您需要将透明样式设置为QFrame:
frame->setStyleSheet("border: none; background: transparent;");然后将属性设置为QMainWindow:
mainWindow->setAttribute(Qt::WA_TranslucentBackground);https://stackoverflow.com/questions/61533223
复制相似问题