QT开发中文网

使用C++qt 在QWidget窗口中存放了一个QTableWidget显示7个表数据,怎么使用QList<int>来实现QTableWidget的TableIndex历史记录功能,最多存20页,并通过按下“前进”和“后退”按钮来实现界面的多次前进和多次返回功能,使用当前tab的索引

可以通过以下步骤实现:

  1. 在QWidget窗口类中添加一个QList类型的成员变量,用于存放TableIndex历史记录。

  2. 在QTableWidget的当前tab索引发生变化时,将该索引值添加到历史记录列表中。如果历史记录数量超过20个,则删除最旧的一条记录。

  3. 在前进按钮和后退按钮的槽函数中,分别从历史记录列表中取出前一个或后一个索引值,然后设置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);
    }
}

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://qt.0voice.com/?id=769

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?