Find Files Example

The Find Files application allows the user to search for files in a specified directory, matching a given file name or wildcard, and containing a specified string (if filled in). The search result is displayed in a table containing the names of the files and their sizes. The application also shows the number of files found.

The Find Files example illustrates the use of several classes:

QProgressDialog

Provide feedback on the progress of a search operation

QFileDialog

Browse through a file list

QTextStream

Use stream operators to read a file

QTableWidget

Browse through the search results in a table

QDesktopServices

Open files in the result list in a suitable application

Screenshot of the Find Files example

Window Class Definition

The Window class inherits QWidget, and is the main application widget. It shows the search options and displays the search results.

 
Sélectionnez
class Window : public QWidget
{
    Q_OBJECT

public:
    Window(QWidget *parent = 0);

private slots:
    void browse();
    void find();
    void animateFindClick();
    void openFileOfItem(int row, int column);
    void contextMenu(const QPoint &pos);

private:
    QStringList findFiles(const QStringList &files, const QString &text);
    void showFiles(const QStringList &paths);
    QComboBox *createComboBox(const QString &text = QString());
    void createFilesTable();

    QComboBox *fileComboBox;
    QComboBox *textComboBox;
    QComboBox *directoryComboBox;
    QLabel *filesFoundLabel;
    QPushButton *findButton;
    QTableWidget *filesTable;

    QDir currentDir;
};

The application has two private slots:

The browse() slot

Called whenever the user wants to browse for a directory to search in

The find() slot

Called whenever the user launches a search with the Find button

In addition we declare several private functions:

findFiles()

Search for files matching the search parameters

showFiles()

Display the search result

ceateButton()

Construct the widget

createComboBox()

Construct the widget

createFilesTable()

Construct the widget

Window Class Implementation

In the constructor we first create the application's widgets.

 
Sélectionnez
Window::Window(QWidget *parent)
    : QWidget(parent)
{
    setWindowTitle(tr("Find Files"));
    QPushButton *browseButton = new QPushButton(tr("&Browse..."), this);
    connect(browseButton, &QAbstractButton::clicked, this, &Window::browse);
    findButton = new QPushButton(tr("&Find"), this);
    conne