void myTabWidget::addTabBarButton(int index)
{
QTabBar* tabBar = this->tabBar();
// 清除前一个标签页的控件
if (currentLeftWidget) {
tabBar->setTabButton(tmpBar, QTabBar::LeftSide, nullptr);
delete currentLeftWidget;
currentLeftWidget = nullptr;
}
if (currentRightWidget) {
tabBar->setTabButton(tmpBar, QTabBar::RightSide, nullptr);
delete currentRightWidget;
currentRightWidget = nullptr;
}
// 更新临时变量
tmpBar = index;
tmpBarName = tabText(tmpBar);
// 在当前标签页的左边添加两个图标
QWidget* leftWidget1 = new QWidget;
QHBoxLayout* leftLayout1 = new QHBoxLayout(leftWidget1);
leftLayout1->setContentsMargins(0, 0, 0, 0); // 去除额外的边距
leftLayout1->setSpacing(0); // 去除组件之间的间距
QLabel* icon1 = new QLabel();
icon1->setPixmap(QPixmap("norun.png").scaled(25, 25, Qt::IgnoreAspectRatio, Qt::SmoothTransformation));
leftLayout1->addWidget(icon1);
// 在当前标签页的右边添加两个按钮
QWidget* rightWidget1 = new QWidget;
QHBoxLayout* rightLayout1 = new QHBoxLayout(rightWidget1);
rightLayout1->setContentsMargins(0, 0, 0, 0);
rightLayout1->setSpacing(0);
QPushButton* button1 = new QPushButton(QIcon("run.png"),"");
QPushButton* button2 = new QPushButton(QIcon("cirrun.png"), "");
button1->setStyleSheet(
"QPushButton {border: none;}"
//"QPushButton:pressed {background: rgba(0, 0, 0, 70);}"
);
button2->setStyleSheet(
"QPushButton {border: none;}"
//"QPushButton:pressed {background: rgba(0, 0, 0, 70);}"
);
button1->setIconSize(QSize(15, 15));
button1->setFixedSize(20, 20);
button2->setIconSize(QSize(15, 15));
button2->setFixedSize(20, 20);
rightLayout1->addWidget(button1);
rightLayout1->addWidget(button2);
connect(button1, &QPushButton::clicked, this, [=](){runTest(icon1); });
connect(button2, &QPushButton::clicked, this, [=](){cirRunTest(icon1);});
leftWidget1->setFocusPolicy(Qt::NoFocus);
rightWidget1->setFocusPolicy(Qt::NoFocus);
button1->setFocusPolicy(Qt::NoFocus);
button2->setFocusPolicy(Qt::NoFocus);
icon1->setFocusPolicy(Qt::NoFocus);
//// 设置当前标签页的左右控件
tabBar->setTabButton(index, QTabBar::LeftSide, leftWidget1);
tabBar->setTabButton(index, QTabBar::RightSide, rightWidget1);
////// 保存当前的控件
currentLeftWidget = leftWidget1;
currentRightWidget = rightWidget1;
}
这个函数是切换标签页时给标签两侧添加按钮或者label,但是使用了之后就发现,切换标签页时标签总是自动跑到右边显示,而不是在原来的位置显示,找了下是使用setTabButton的原因,有什么办法可以解决吗