gpt4 book ai didi

python - QFileSystemModel QTableView 修改日期高亮

转载 作者:行者123 更新时间:2023-12-04 09:39:57 27 4
gpt4 key购买 nike

我正在尝试使用 QFileSystemModel 和 QTableView 制作一个小文件浏览器。

我想知道是否可以在“修改日期”列中突出显示具有相同值的行,例如,如果我今天修改了两个或多个文件,行以绿色突出显示,
昨天修改的那些以绿色但较浅的阴影突出显示,等等。

最佳答案

要更改背景颜色,有几个选项,例如:

  • 覆盖 data()使模型的方法返回与角色相关联的值Qt.BackgroundRole .
  • 使用 QIdentityProxyModel 修改与 Qt.BackgroundRole 关联的值类似于上一个选项
  • 使用 QStyledItemDelegate修改 backgroundBrush QStyleOptionViewItem 的属性(property).

  • 最简单的选项是最后一个选项,因此我将展示您的实现:
    from PyQt5 import QtCore, QtGui, QtWidgets


    class DateDelegate(QtWidgets.QStyledItemDelegate):
    def initStyleOption(self, option, index):
    super().initStyleOption(option, index)
    model = index.model()
    if isinstance(model, QtWidgets.QFileSystemModel):
    dt = model.lastModified(index)

    today = QtCore.QDateTime.currentDateTime()
    yesterday = today.addDays(-1)
    if dt < yesterday:
    option.backgroundBrush = QtGui.QColor(0, 255, 0)
    else:
    option.backgroundBrush = QtGui.QColor(0, 155, 0)


    def main():
    import sys

    app = QtWidgets.QApplication(sys.argv)

    path_dir = QtCore.QDir.currentPath()

    view = QtWidgets.QTableView()
    model = QtWidgets.QFileSystemModel()
    view.setModel(model)
    model.setRootPath(path_dir)

    view.setRootIndex(model.index(path_dir))

    view.show()

    delegate = DateDelegate(view)
    view.setItemDelegate(delegate)

    sys.exit(app.exec_())


    if __name__ == "__main__":
    main()

    关于python - QFileSystemModel QTableView 修改日期高亮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62377343/

    27 4 0