可以通过以下步骤实现:
在QWidget窗口类中添加一个QList
类型的成员变量,用于存放TableIndex历史记录。 在QTableWidget的当前tab索引发生变化时,将该索引值添加到历史记录列表中。如果历史记录数量超过20个,则删除最旧的一条记录。
在前进按钮和后退按钮的槽函数中,分别从历史记录列表中取出前一个或后一个索引值,然后设置QTableWidget的当前tab为该索引值即可。
示例代码如下:
class MyWidget: public QWidget
{
Q_OBJECT
public:
MyWidget(QWidget *parent = nullptr);
private slots:
void on_tabIndexChanged(int index);
void on_backButtonClicked();
void on_forwardButtonClicked();
private:
QTableWidget *m_tableWidget;
QList<int> m_historyList;
QPushButton *m_backButton;
QPushButton *m_forwardButton;
};
MyWidget::MyWidget(QWidget *parent)
: QWidget(parent)
{
// 初始化QTableWidget和按钮等控件
connect(m_tableWidget, SIGNAL(currentChanged(int)), this, SLOT(on_tabIndexChanged(int)));
connect(m_backButton, SIGNAL(clicked()), this, SLOT(on_backButtonClicked()));
connect(m_forwardButton, SIGNAL(clicked()), this, SLOT(on_forwardButtonClicked()));
}
void MyWidget::on_tabIndexChanged(int index)
{
// 将当前tab索引添加到历史记录列表中
m_historyList.append(index);
// 如果历史记录数量超过20个,则删除最旧的一条记录
if (m_historyList.size() > 20) {
m_historyList.removeFirst();
}
}
void MyWidget::on_backButtonClicked()
{
// 从历史记录列表中取出前一个索引值
if (!m_historyList.isEmpty()) {
int index = m_historyList.takeLast();
// 设置QTableWidget的当前tab为该索引值
m_tableWidget->setCurrentIndex(index);
}
}
void MyWidget::on_forwardButtonClicked()
{
// 从历史记录列表中取出后一个索引值
if (!m_historyList.isEmpty()) {
int index = m_historyList.takeFirst();
// 设置QTableWidget的当前tab为该索引值
m_tableWidget->setCurrentIndex(index);
}
}