目录视图范例

This example demonstrates the usage of a tree view, and smooth flicking on a touchscreen.

The Dir View example shows a tree view of the local file system. It uses the QFileSystemModel class to provide file and directory information.

    QCommandLineParser parser;
    parser.setApplicationDescription("Qt Dir View Example");
    parser.addHelpOption();
    parser.addVersionOption();
    QCommandLineOption dontUseCustomDirectoryIconsOption("c", "Set QFileSystemModel::DontUseCustomDirectoryIcons");
    parser.addOption(dontUseCustomDirectoryIconsOption);
    QCommandLineOption dontWatchOption("w", "Set QFileSystemModel::DontWatch");
    parser.addOption(dontWatchOption);
    parser.addPositionalArgument("directory", "The directory to start in.");
    parser.process(app);
    const QString rootPath = parser.positionalArguments().isEmpty()
					

The example supports a number of command line options. These options include:

  • Application description
  • -help option
  • -version option
  • if the optionc {-c} is specified, the application will not use custom directory options
    QFileSystemModel model;
    model.setRootPath("");
    if (parser.isSet(dontUseCustomDirectoryIconsOption))
        model.setOption(QFileSystemModel::DontUseCustomDirectoryIcons);
    if (parser.isSet(dontWatchOption))
        model.setOption(QFileSystemModel::DontWatchForChanges);
    QTreeView tree;
    tree.setModel(&model);
					

声明 model as data model for reading the local filesystem. model.setRootPath("") sets the current folder as the folder from which model will start reading. QTreeView 对象 tree visualizes the filesystem in a tree structure.

    tree.setAnimated(false);
    tree.setIndentation(20);
    tree.setSortingEnabled(true);
    const QSize availableSize = tree.screen()->availableGeometry().size();
    tree.resize(availableSize / 2);
    tree.setColumnWidth(0, tree.width() / 3);
					

Sets layout options for animation, indentation, sorting, and sizing of the filesystem tree.

    QScroller::grabGesture(&tree, QScroller::TouchGesture);
					

创建 QScroller instance to recognize gestures on touchscreens, so that you can flick the tree view with your finger.

范例工程 @ code.qt.io