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博客

相关推荐
编码小笨猪5 小时前
[ Qt ] | Qlabel使用
开发语言·c++·qt
吃个糖糖5 小时前
Halcon联合QT ROI绘制
开发语言·qt
feiyangqingyun19 小时前
Qt/C++开发监控GB28181系统/sip协议/同时支持udp和tcp模式/底层协议解析
c++·qt·gb28181
编码小笨猪1 天前
[ Qt ] | 常用控件(三):
开发语言·qt
cykaw25901 天前
使用QT做网络调试助手心得
网络·qt
Echo``1 天前
8:OpenCV—仿射变换和坐标映射
开发语言·图像处理·人工智能·qt·opencv·计算机视觉·命令模式
know_heng1 天前
UBUNTU20.04 配置以QT界面程序代替系统界面启动,以及如何在tty模式下以linuxfb形式启动
开发语言·qt·ubuntu·嵌入式设备
丿无缘梦丨1 天前
qt ubuntu 20.04 交叉编译
linux·qt·ubuntu
丁劲犇1 天前
基于Qt的MCP LLM代理服务开发实战:从0到1扩展大语言模型
c++·qt·llm·agent·httpserver·mcp
hvinsion1 天前
【开源解析】基于PyQt5+Folium的谷歌地图应用开发:从入门到实战
python·qt·开源·地图·谷歌地图·folium·地图引擎