我有一个问题,似乎是其他人之前已经问过,但自2008年以来没有回答。
http://www.qtcentre.org/threads/17227-QTabBar-scrollbar-separation
是否可以将滚动条与QTabBar分开?
"<-" tab1 | tab2 | tab3 | tab4 "->"
答案 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中有QPushButton或QToolButton,你可以通过继承paintEvent来实现这个目的。为此,请将QPushButton或QToolButton设置为QTabBar父级,并将QPushButton的大小添加到x坐标,以使它们不重叠。 (截图中的按钮不是父级。)