Linux书签上下移动方式

2025-03-20日常编程249510

这篇文章主要介绍了Linux书签上下移动方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

目录
  • Linux书签上下移动
    • 步骤
    • 书签文件路径
    • 上移
    • 下移
    • 监视到书签文件变化更新书签树
  • 总结

    Linux书签上下移动

    步骤

    读书签文件,分割到QStringList,点击右键菜单获取序号,交换序号,写书签文件。

    QStringList.swap(int, int) 过时,QStringList.swapItemsAt(int, int) 代替。

    书签文件路径

    • mainwindow.h
    const QString filepath_bookmark = QStandardPaths::writableLocation(QStandardPaths::ConfigLocation) + "/gtk-3.0/bookmarks";

    上移

    connect(action_bookmark_move_up, &QAction::triggered, [=](){
        QTreeWidgetItem *TWI = ui->treeWidget_nav->currentItem();
        int index = TWI_bookmark->indexOfChild(TWI);
        QFile file(filepath_bookmark);
        if (file.open(QFile::ReadWrite)) {
            QTextStream TS(&file);
            QString s = TS.readAll();
            QStringList SL = s.split("\n");
            SL.swapItemsAt(index, index - 1);
            s = "";
            for (int i=0; i<SL.length(); i++) {
                s += SL.at(i);
                if (i < SL.length() - 1)
                    s += "\n";
            }
            file.resize(0);
            TS << s;
            file.close();
        }
    });

    下移

    • swap -1 改成 +1,其他一样。
    connect(action_bookmark_move_down, &QAction::triggered, [=](){
        QTreeWidgetItem *TWI = ui->treeWidget_nav->currentItem();
        int index = TWI_bookmark->indexOfChild(TWI);
        QFile file(filepath_bookmark);
        if (file.open(QFile::ReadWrite)) {
            QTextStream TS(&file);
            QString s = TS.readAll();
            QStringList SL = s.split("\n");
            SL.swapItemsAt(index, index + 1);
            s = "";
            for (int i=0; i<SL.length(); i++) {
                s += SL.at(i);
                if (i < SL.length() - 1)
                    s += "\n";
            }
            file.resize(0);
            TS << s;
            file.close();
        }
    });

    监视到书签文件变化更新书签树

    QFileSystemWatcher只触发一次

    • 百度AI回答:
    • 只能触发一次,如果需要持续触发,需要在处理完触发后,再次添加路径。
    const QString filepath_bookmark = QStandardPaths::writableLocation(QStandardPaths::ConfigLocation) + "/gtk-3.0/bookmarks";
    QFileSystemWatcher *watcher = new QFileSystemWatcher;
    watcher->addPath(filepath_bookmark);
    connect(watcher, &QFileSystemWatcher::fileChanged, [=]{
        genBookmark();
        watcher->addPath(filepath_bookmark);
    });

    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持北冥有鱼。

    您可能感兴趣的文章:

    • linux查看服务端证书方式(keytool和openssl)
    • IIS部署Linux环境下的cer证书步骤
    • Linux Centos7下生成https自签名证书
    • Linux之Centos8创建CA证书教程
    • Linux环境下生成openssl证书注意细节介绍
    • linux c++ 服务器端开发面试必看书籍整理
    本文地址:https://www.ufcn.cn/tutorials/3385017.html

    如非特殊说明,本站内容均来自于网友自主分享,概不代表本站观点,如有任何问题我们都将在收到反馈后的第一时间进行处理!