Linux书签上下移动

步骤

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

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

书签文件路径

mainwindow.h

cpp 复制代码
const QString filepath_bookmark = QStandardPaths::writableLocation(QStandardPaths::ConfigLocation) + "/gtk-3.0/bookmarks";

上移

cpp 复制代码
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,其他一样。

cpp 复制代码
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只触发一次-CSDN博客

相关推荐
谱写秋天25 分钟前
VSCode+Qt+CMake详细地讲解
c++·ide·vscode·qt·编辑器
ajassi20003 小时前
开源 C++ QT Widget 开发(六)通讯--TCP调试
c++·qt·开源
Forward♞7 小时前
Qt——网络通信(UDP/TCP/HTTP)
开发语言·c++·qt
老赵的博客1 天前
QT的项目pro qmake编译
开发语言·qt
WALL-EC1 天前
Qt工具栏中图标槽函数没有响应的问题分析
开发语言·qt·osgearth
春蕾夏荷_7282977251 天前
qt ElaWidgetTools第一个实例
开发语言·qt
韭菜钟2 天前
在Qt中用cmake实现类似pri文件的功能
开发语言·qt·系统架构
韭菜钟2 天前
Qt从qmake迁移到cmake的记录
开发语言·qt
永不停转2 天前
详谈 QLayout::SizeConstraint 和 QSizePolicy 对 QWidget 尺寸的影响
c++·qt
王廷胡_白嫖帝2 天前
Qt网络速度测试工具开发教程 - 从零开始构建网络测速应用
开发语言·网络·qt