我试图在左侧显示已打开的标签文本.i在样式表中写道。但它无效。
这是我使用的样式表
QTabWidget QTabBar{
background-color: #373738;
height: 30px;
}
QTabWidget QTabBar::tab{
text-align: left;
background-color: #136ba2;
border-style: 1px rgb(67, 67, 67);
height: 30px;
width: 130px;
color: #136ba2;
padding: 0px 5px 0px 5px;
}
QTabWidget QTabBar::tab:selected{
background-color: #5A5B5C;
font-weight: bold;
color: #ffffff;
}
QTabWidget QTabBar::tab:!selected{
background-color:#353536;
color: #B4B4B4;
}
QTabWidget QTabBar::tab:hover{
background-color: #5A5B5C;
color: #ffffff;
}
答案 0 :(得分:1)
根据文档:
,我认为样式表是不可能的text-align [...]此属性目前仅由QPushButton和QProgressBar支持。
https://doc.qt.io/qt-5/stylesheet-reference.html#list-of-properties
答案 1 :(得分:0)
这可以使用选项卡按钮小部件来显示标签文本。
有一个标签,左对齐文字:
QLabel * button = new QLabel("text");
button->setAlignment(Qt::AlignLeft);
如有必要,将标签文本设置为空字符串:
ui->tabWidget->tabBar()->setTabText(index, "");
将标签设置为标签按钮小部件:
ui->tabWidget->tabBar()->setTabButton(index, QTabBar::LeftSide, button);
您仍然可以设置标签样式,在标签窗口小部件样式表中添加QLabel条目:
QLabel{ color: white; }
此处仅存在问题:无法根据选择(即,使选定的选项卡文本为粗体)使用CSS设置标签文本的样式。但仍然可以捕捉标签小部件currentChanged
信号:
void Form::on_tabWidget_currentChanged(int index)
{
for(int i=0; i<ui->tabWidget->tabBar()->count(); i++)
{
QWidget * button = ui->tabWidget->tabBar()->tabButton(i, QTabBar::LeftSide);
if(button != nullptr)
{
QFont font = button->font();
font.setBold(i == index);
button->setFont(font);
}
}
}