Linux

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > Linux > Linux书签上下移动

Linux书签上下移动方式

作者:海天鹰

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

Linux书签上下移动

步骤

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

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

书签文件路径

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();
    }
});

下移

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只触发一次

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);
});

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文