我想从QStringList中删除一个字符串(以下代码中的folders),如果它包含在同一列表中的另一个字符串中。
例如:" /tmp/a /tmp/b /tmp/a/aa /tmp/c /tmp/a/aa/aaa /tmp/d"
我想删除第1个和第3个字符串,因为它们包含在第5个字符串中。我知道如何在bash中使用grep来做到这一点,但是如何在Qt中实现呢?请注意保留原有的HTML标签。
完整的代码可在https://github.com/FluxFlux/qdir2mod获取。
void MainWindow::on_toolButtonSourceFolders_clicked()
{
QString startDir = lineEditStartFolder->text();
QFileDialog* folderDialog = new QFileDialog(this);
folderDialog->setDirectory(lineEditStartFolder->text());
folderDialog->setFileMode(QFileDialog::Directory);
folderDialog->setOption(QFileDialog::DontUseNativeDialog, true);
folderDialog->setOption(QFileDialog::ShowDirsOnly, true);
folderDialog->setOption(QFileDialog::DontResolveSymlinks, true);
QListView *folderList = folderDialog->findChild<QListView*>("listView");
if (folderList) {
folderList->setSelectionMode(QAbstractItemView::MultiSelection);
}
QTreeView *folderTree = folderDialog->findChild<QTreeView*>();
if (folderTree) {
folderTree->setSelectionMode(QAbstractItemView::MultiSelection);
}
folderDialog->exec();
QStringList folders = folderDialog->selectedFiles();
if (!folders.isEmpty())
listWidget->addItems(folders);
}
完整的代码可在https://github.com/FluxFlux/qdir2mod获取。