步骤
读书签文件,分割到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();
}
});