QTabwidget 的选项卡文本对齐不起作用

问题描述 投票:0回答:3

我试图在左侧显示打开的选项卡文本。我在样式表中写了该文本。但它不起作用。

这是我使用的样式表

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;
}

这是一张图片

c++ qt qtstylesheets qtabwidget
3个回答
1
投票

这可以使用选项卡按钮小部件显示选项卡文本来完成。

有一个标签,文本左对齐:

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);
        }
    }
}

1
投票

根据文档,我认为样式表不可能:

text-align [...] 该属性目前仅由 QPushButton 和 QProgressBar 支持。

https://doc.qt.io/qt-5/stylesheet-reference.html#list-of-properties


0
投票

我发现的一个解决方法(不是干净的方法)是在标题末尾添加一些额外的空格;

QString tabTitle = "Page 1     ";

将文本向左移动。

© www.soinside.com 2019 - 2024. All rights reserved.