我有一个问题,似乎已经有人问过,但自2008年以来没有任何回答。

http://www.qtcentre.org/threads/17227-QTabBar-scrollbar-separation

这样可以将滚动条与QTabBar分开吗?

"<-" tab1 | tab2 | tab3 | tab4 "->"

最佳答案

滚动条包含两个单独的QToolButton。我认为不能通过子类化QTabBar并重写paintEvent来重新设置它们的样式。您将必须创建自己的函数(在paintEvent的帮助下),以将不可见的选项卡移动到视口(viewport)。这与Qt实现它的方式相同,即查看makeVisible并连接单独的按钮以移动选项卡。

还有另一种简单方法可以将您自己的按钮连接到QTabBar。首先,你必须打电话

setUsesScrollButtons(bool useButtons)

并将此值设置为true。然后,使用Alpha通道重新设置滚动条的样式,使其不可见。
QTabBar QToolButton {
    background-color: rgba(255, 255, 255, 0);
    border:0;
}

QTabBar QToolButton::right-arrow:enabled {
    background-color: rgba(255, 255, 255, 0);
    border:0;
}

QTabBar QToolButton::right-arrow:disabled {
   background-color: rgba(255, 255, 255, 0);
   border:0;
}

QTabBar QToolButton::left-arrow:enabled {
    background-color: rgba(255, 255, 255, 0);
    border:0;
}

QTabBar QToolButton::left-arrow:disabled {
    background-color: rgba(255, 255, 255, 0);
    border:0;
}

然后,您可以使用<>创建两个QPushButton或QToolButton。
void MainWindow::on_pushButton_2_clicked()
{
     ui->tabWidget->setCurrentIndex(ui->tabWidget->currentIndex()+1);
}

void MainWindow::on_pushButton_clicked()
{
     ui->tabWidget->setCurrentIndex(ui->tabWidget->currentIndex()-1);
}

样本画面

c&#43;&#43; - QTabBar滚动条分离-LMLPHP

也许这足以供您使用,并且您无需重新实现所有工作,这可能需要几天的时间。

如果要在QTabBar中包含QPushButton或QToolButton,可以通过将paintEvent子类化来实现。为此,请将QPushButton或QToolButton设置为QTabBar父级,并在X坐标上添加QPushButton的大小,以使它们不会重叠。 (屏幕截图中的按钮不是父按钮。)

09-25 17:09
查看更多