gpt4 book ai didi

c++ - QTabBar 保留标签位置

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:49:14 27 4
gpt4 key购买 nike

在我的应用程序中,我有一个 QTabBar 小部件,如果有很多选项卡,它会使用滚动按钮。

现在,在 currentChanged(int) 信号上,我调用了一个重命名上一个和当前选项卡的方法(调用 setTabText())。

不幸的是,这会重新绘制整个 QTabBar,因此,如果我当前的选项卡在重新绘制后位于滚动的选项卡栏中间的某个位置,那么它是栏上最后绘制的选项卡,这样我就可以看到更多前面的选项卡.有什么办法可以让当前标签保持在同一个位置吗?

最佳答案

我不确定我是否正确理解了问题,但使用以下代码,我的应用程序运行良好。

请测试此代码以检查它是否适合您并查看与您的应用程序的差异。

main.cpp

#include "mainwindow.h"
#include <QApplication>

int main(int argc, char *argv[])
{
QApplication app(argc, argv);
MainWindow mainWindow;
mainWindow.show();
return app.exec();
}

主窗口.h

#ifndef _MAINWINDOW_H
#define _MAINWINDOW_H

#include <QMainWindow>
#include <QTabBar>
#include <QDebug>

class MainWindow: public QMainWindow {
Q_OBJECT
QTabBar *tabBar;

public:
MainWindow();
~MainWindow();

private slots:
void onCurrentChanged(int index);
};

#endif

主窗口.cpp

#include "mainwindow.h"

MainWindow::MainWindow()
{
tabBar = new QTabBar();

for (int i = 1; i < 10; ++i)
{
tabBar->addTab(QString("###") + QString::number(i) + QString("###"));
}

QObject::connect(tabBar, &QTabBar::currentChanged,
this, &MainWindow::onCurrentChanged);

setCentralWidget(tabBar);
}

MainWindow::~MainWindow()
{
}

void MainWindow::onCurrentChanged(int index)
{
int currentIndex = tabBar->currentIndex();
qDebug("currentChanged(%d), currentIndex() = %d", index, currentIndex);

for (int i = index; i >= 0; --i)
{
tabBar->setTabText(i, QString::number(i+1));
}
}

关于c++ - QTabBar 保留标签位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32211741/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com