这个问题涉及到
我在这里问,因为我相信SO社区可能有办法解决这个问题.
所以我喜欢将ScrollArea的背景颜色设置为透明或自定义背景图像,因为它将包含一些横幅.我已经在Qt Creator(Designer)中运行了它!:-):
但是当将应用程序部署到模拟器时它将无法工作,它们会保持灰色,深灰色:
这是我的布局树:
这是我正在使用的样式表(附加并设置为MainWindow):
QMainWindow {
background: transparent url(:/ui/designs/images_from_android/bg_plain_empty.png) top left;
}
QWidget#centralWidget {
background-color: transparent;
}
QPushButton {
color: red;
border: 1px solid green;
}
QFrame#top_header {
background: transparent url(:/ui/designs/images_from_android/bg_title_bar_landscape.png) top left repeat-x;
}
QWidget#top_banner_scroll1,
QWidget#top_banner_scroll2 {
background: transparent url(:/ui/designs/images_from_android/stripe_bg.png) top left repeat-x;
}
Run Code Online (Sandbox Code Playgroud)
这非常令人费解.正如Qt Designer向我展示了合适的设计......
Joh*_*kic 15
使用样式表
QScrollArea { background: transparent; }
QScrollArea > QWidget > QWidget { background: transparent; }
QScrollArea > QWidget > QScrollBar { background: palette(base); }
Run Code Online (Sandbox Code Playgroud)
要理解这一点,我们可以使用类似但简单的布局:
scrollarea QScrollArea
+ scrollareaContent QWidget
+ label QLabel
Run Code Online (Sandbox Code Playgroud)
有趣的是,有两个小部件具有不透明的背景.第一个是scrollarea本身(使用样式表的第一行透明).
另一个(我没想到的)是scrollareaContent,用第二行解决.第一个QWidget是QScrollArea的私有视口,无法直接访问.另一个是scrollareaContent.此方法应使所有QScrollAreas透明,而不会影响任何其他小部件.
更新:我在样式表中添加了第三行,以防止滚动条变得透明,因为它们也是QScots在QScrollArea之下的两个级别.
使用以下样式表,我能够使滚动区域透明,同时保持滚动条的默认背景颜色:
scrollArea.setStyleSheet("QScrollArea {background-color:transparent;}");
scrollAreaContents.setStyleSheet("background-color:transparent;");
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
15737 次 |
最近记录: |