QT开发中文网

Qt 存储历史界面,最多存20页,通过按下键盘的“前进”和“后退”按钮来实现界面的多次前进和多次返回功能,文件关闭后清空历史记录C++

以下是一个简单的示例代码,演示如何实现Qt存储历史界面、前进后退功能和清空历史记录功能。

#include <QApplication>
#include <QWidget>
#include <QPushButton>
#include <QList>
#include <QDebug>

class MyWidget : public QWidget
{
    Q_OBJECT
public:
    explicit MyWidget(QWidget *parent = nullptr)
        : QWidget(parent), currentIndex(-1)
    {
        // 初始化历史记录数组
        history.reserve(20);

        // 创建前进按钮和后退按钮
        QPushButton *backButton = new QPushButton("Back", this);
        QPushButton *forwardButton = new QPushButton("Forward", this);

        // 连接按钮的点击事件到对应的槽函数
        connect(backButton, &QPushButton::clicked, this, &MyWidget::goBack);
        connect(forwardButton, &QPushButton::clicked, this, &MyWidget::goForward);

        // 将按钮添加到界面中
        backButton->move(10, 10);
        forwardButton->move(100, 10);
    }

private slots:
    void goBack()
    {
        if (currentIndex > 0) {
            currentIndex--;
            qDebug() << "Go back to page:" << history[currentIndex];
        }
    }

    void goForward()
    {
        if (currentIndex < history.size() - 1) {
            currentIndex++;
            qDebug() << "Go forward to page:" << history[currentIndex];
        }
    }

protected:
    void closeEvent(QCloseEvent *event) override
    {
        // 清空历史记录数组
        history.clear();
        currentIndex = -1;

        // 调用父类的closeEvent()函数
        QWidget::closeEvent(event);
    }

    void keyPressEvent(QKeyEvent *event) override
    {
        if (event->key() == Qt::Key_Back || event->key() == Qt::Key_BrowserBack) {
            // 模拟返回按钮点击事件
            goBack();
        } else if (event->key() == Qt::Key_Forward || event->key() == Qt::Key_BrowserForward) {
            // 模拟前进按钮点击事件
            goForward();
        } else {
            // 其他按键事件处理
            QWidget::keyPressEvent(event);
        }
    }

private:
    QList<QString> history; // 历史记录数组
    int currentIndex; // 当前页面在历史记录数组中的索引
};

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    MyWidget w;
    w.resize(300, 200);
    w.show();

    return a.exec();
}

#include "main.moc"

这个示例代码中,我们创建了一个继承自QWidget的MyWidget类,实现了存储历史界面、前进后退功能和清空历史记录功能。其中:

  1. 历史记录数组history使用QList类型保存每一个页面的信息;
  2. 当前页面在历史记录数组中的索引currentIndex初始化为-1,表示当前没有任何页面;
  3. goBack()和goForward()函数分别响应“后退”和“前进”按钮的点击事件,根据当前页面在历史记录数组中的索引更新页面内容;
  4. closeEvent()函数重载了QWidget的关闭事件处理函数,在窗口关闭时清空历史记录数组;
  5. keyPressEvent()函数重载了QWidget的按键事件处理函数,在按下“后退”和“前进”键时模拟点击对应按钮。

注意:这只是一个简单的示例代码,具体实现还需要根据实际需求进行修改和完善。

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

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

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

联系我们

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

微信号:3007537140

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

关注我们
x

注册

已经有帐号?