我有一个问题,似乎已经有人问过,但自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);
}
样本画面
也许这足以供您使用,并且您无需重新实现所有工作,这可能需要几天的时间。
如果要在QTabBar中包含QPushButton或QToolButton,可以通过将paintEvent子类化来实现。为此,请将QPushButton或QToolButton设置为QTabBar父级,并在X坐标上添加QPushButton的大小,以使它们不会重叠。 (屏幕截图中的按钮不是父按钮。)