我在QGIS的“最近的项目”列表中有一个不再存在的项目,但它一直被列出(显示为灰色且没有缩略图)。有什么方法可以将其从列表中删除吗?也许是通过手动编辑历史记录文件之类的东西?

我找到了对此的功能要求以及相关的讨论,但是我想知道QGIS 2.14现在是否可以做些什么。

#1 楼


要删除特定项目,请从工具栏中转到Settings > Options > Advanced


郑重保证,请务必小心并单击。找到UI文件夹并找到recentProjects。在这里,您将看到最近项目的索引:

您可以扩大“值”列以查看有关项目的更多详细信息。确定要删除的项目,并记下文件夹号(例如2)。然后在Python控制台中输入:
    from qgis.PyQt.QtCore import QSettings
    QSettings().remove('UI/recentProjects/2')

重新启动QGIS,应从列表中删除该项目。



要删除整个最近的项目列表,可以在Python控制台中输入以下内容:
  from qgis.PyQt.QtCore import QSettings
  QSettings().remove('UI/recentProjects')



重新启动QGIS,您应该会看到列表已清除。

评论


认为现在是提出功能请求以使其自动化的时候了。对于冗余项目,我也遇到了同样的问题……而且我不能保证会小心!

–安德鲁·泰斯(Andrew Tice)
16年6月21日在21:45

具有与此功能相关联的其他一些功能将是“不错的”。我想增加最近可以看到的项目数量。我还希望能够选择查看较大的缩略图还是较小的缩略图(如未保存项目,就像我看到的那样),也许是最近的项目网格而不是列表(看到我有)宽屏,缩略图的右侧有很多空白)。

–约翰娜(Johanna)
16年6月21日在22:50

@AndrewTice-我也有多余的项目,但是我倾向于忽略它们。随时添加功能请求! ...并且如果您不能保证会小心的话,也许还可以添加另一个功能请求,以使用“撤消”按钮=)

–约瑟夫
16年6月22日在8:41

@Johanna-这些功能听起来很有用,尤其是在使用宽屏显示器或高分辨率时。再次考虑添加功能请求:)

–约瑟夫
16年6月22日在8:44

@Joseph-我用纯Python解决方案发布了另一个答案。

– Stefan
18 Mar 23 '18 at 13:10

#2 楼

您也可以尝试

设置->选项->系统-> QSettings->重置

,这可能会重置最近的列表。

#3 楼

如果您使用的是Windows计算机,从列表中清除项目的最简单方法是使用Regedit从注册表中删除它们。

打Win + R并键入“ regedit”,然后导航至:

HKEY_CURRENT_USER \ Software \ QGIS \ QGIS2 \ UI \ recentProjects

最近的项目密钥将为每个项目都有一个子项,并且根据顺序它们的名称从1到10上次打开的时间(最近的1个)。您可能希望将此键添加书签以方便以后使用(“文件”菜单>“收藏夹”>“添加到收藏夹”),并且由于Regedit没有撤消功能(右键单击>“导出”,然后选择文件名和位置),您也可能希望导出最近的项目键。 )。

您可以在每个项目的子字符串值(CRS,项目路径,预览图像和标题)中查看其详细信息。从那里有一个简单的问题,就是删除不需要的项目的键。您甚至可以复制这些键之一,并配置字符串以指向项目,并根据需要自定义png预览图像添加一个。

其他注意事项:这样操作不会删除任何文件。项目文件和数据文件应该很容易找到,如果您也想摆脱它们,但是以这种方式进行操作也将使png预览图像变成孤立的数据文件夹,直到地球撞向太阳为止。如果您也想摆脱它们,则可以在C:\ Users \ User文件夹\ .qgis2 \ previewImages或类似文件夹中找到它们,具体取决于您的操作系统和配置。

快乐映射!。

#4 楼

除了Josephs的答案,我想在这里发布一个纯Python解决方案,以获取QGIS Python控制台中所有最新项目的信息。我是在评论约瑟夫(Josephs)答案的时候问这个问题的,不想问一个额外的问题。

from PyQt4.QtCore import QSettings
for key in QSettings().allKeys():
    if 'recentProjects' in key:
    #if 'recentProjects' and 'title' in key:  # if only the title is wanted
        print key + ' - ' + QSettings().value(key)