QTabBar滚动条分离

时间:2018-04-07 14:44:37

标签: c++ qt

我有一个问题,似乎是其他人之前已经问过,但自2008年以来没有回答。

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

是否可以将滚动条与QTabBar分开?

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

1 个答案:

答案 0 :(得分:1)

滚动条由两个单独的QToolButton组成。我不认为它们可以通过继承QTabBar并重写paintEvent来重新设置样式。您必须创建自己的函数(在paintEvent的帮助下),将不可见的选项卡移动到视口。这也与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);
}

示例屏幕

QTabBar

也许这对你的使用来说已经足够了,你不需要重新实现所有的东西,这可能需要几天时间。

如果你想在QTabBar中有QPushButton或QToolButton,你可以通过继承paintEvent来实现这个目的。为此,请将QPushButton或QToolButton设置为QTabBar父级,并将QPushButton的大小添加到x坐标,以使它们不重叠。 (截图中的按钮不是父级。)