我在主机中设置了一张图片作为背景,并在上面添加了两个小部件:一个
QTableWidget
和一个QTabWidget
。
我已经通过
tablewidget
将stylesheet
的背景设置为透明
在 vs2013 中。表格背景显示的是我设置的图片,但是horizontalheader
部分还是白色的:
TaskInfWidget_->setStyleSheet("QTableWidget{background:transparent;}\
QTableWidget::item{border-top:1px solid grey;border-bottom:none;border-right:none;border-left:none;}\
QHeaderView::section{background:transparent;color:black; font-family:宋体;font-size:15px;font-weight:200;\
border:none;}");
但是当我在
tablewidget
中添加tabwidget
并设置stylesheet
的tabwidget
时,它不起作用:
QTabWidget *tab_widget=new QTabWidget;
QTableWidget *table = new QTableWidget(10, 1);
tab_widget->addtab(table,"hahaha");
tab_widget>setStyleSheet("QTabWidget::pane{background:transparent}\
QTabBar::tab{background-color:transparent;height:30px;}\
QTabBar::tab:selected{background-color:rgb(55,112,183)}\
QTabBar::tab:hover{color:rgb(235,97,0);}");
table->setStyleSheet("QTableWidget{background:transparent;\
border:3px solid rgb(30,77,135);\
selection-background-color:rgb(30,77,135);}");
我设置了
QTabWidget::pane{background:transparent}
和QTableWidget{background:transparent}
,但是tablewidget
的背景还是白色,不是主机的图片
这里有两个最小的样式表,仅演示实现背景透明度所需的内容。
对于标题视图项,将此样式表应用于 QTableWidget:
QHeaderView
{
background: transparent;
}
QHeaderView::section
{
background:transparent;
border:none;
}
对于 QTabWidget 内的 QTableWidget,请在 QTabWidget 上应用此样式表:
QTabWidget::pane {
border: 1px solid white;
/*or*/
border: none;
}
QTabBar::tab {
border: 1px solid white;
/*or*/
border: none;
}
QTableWidget 上的样式表:
QTableWidget
{
background: transparent;
}
QHeaderView
{
background: transparent;
border: 1px solid white;
/*or just remove the border, but it needs to be done explicitly*/
border: none;
}
QHeaderView::section
{
background:transparent;
border: 1px solid white;
/*or just remove the border, but it needs to be done explicitly*/
border: none;
}
您可以在此基础上继续发展,如果失去透明度,则后退一步。
如果由于某种原因这确实使背景透明,请检查父窗口小部件的样式表是否导致冲突,尤其是
background
和border
。
注意:这是使用Fusion风格进行测试的,它可能不适用于其他风格。