⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 findfiledialog.cpp

📁 QT 开发环境里面一个很重要的文件
💻 CPP
字号:
/******************************************************************************** Copyright (C) 2005-2006 Trolltech ASA. All rights reserved.**** This file is part of the example classes of the Qt Toolkit.**** This file may be used under the terms of the GNU General Public** License version 2.0 as published by the Free Software Foundation** and appearing in the file LICENSE.GPL included in the packaging of** this file.  Please review the following information to ensure GNU** General Public Licensing requirements will be met:** http://www.trolltech.com/products/qt/opensource.html**** If you are unsure which license is appropriate for your use, please** review the following information:** http://www.trolltech.com/products/qt/licensing.html or contact the** sales department at sales@trolltech.com.**** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.******************************************************************************/#include <QtGui>#include "findfiledialog.h"FindFileDialog::FindFileDialog(QTextEdit *editor, QAssistantClient *assistant,                               QWidget *parent)    : QDialog(parent){    currentAssistantClient = assistant;    currentEditor = editor;    createButtons();    createComboBoxes();    createFilesTree();    createLabels();    createLayout();    directoryComboBox->addItem(QDir::toNativeSeparators(QDir::currentPath()));    fileNameComboBox->addItem("*");    findFiles();    setWindowTitle(tr("Find File"));}void FindFileDialog::browse(){    QString currentDirectory = directoryComboBox->currentText();    QString newDirectory = QFileDialog::getExistingDirectory(this,                               tr("Select Directory"), currentDirectory);    if (!newDirectory.isEmpty()) {        directoryComboBox->addItem(QDir::toNativeSeparators(newDirectory));        directoryComboBox->setCurrentIndex(directoryComboBox->count() - 1);        update();    }}void FindFileDialog::help(){    currentAssistantClient->showPage(QLibraryInfo::location(QLibraryInfo::ExamplesPath) +            QDir::separator() +  "assistant/simpletextviewer/documentation/filedialog.html");}void FindFileDialog::openFile(QTreeWidgetItem *item){    if (!item) {        item = foundFilesTree->currentItem();        if (!item)            return;    }    QString fileName = item->text(0);    QString path = directoryComboBox->currentText() + QDir::separator();    QFile file(path + fileName);    if (file.open(QIODevice::ReadOnly)) {        QString data(file.readAll());        if (fileName.endsWith(".html"))            currentEditor->setHtml(data);        else            currentEditor->setPlainText(data);    }    close();}void FindFileDialog::update(){    findFiles();    buttonBox->button(QDialogButtonBox::Open)->setEnabled(            foundFilesTree->topLevelItemCount() > 0);}void FindFileDialog::findFiles(){    QRegExp filePattern(fileNameComboBox->currentText() + "*");    filePattern.setPatternSyntax(QRegExp::Wildcard);    QDir directory(directoryComboBox->currentText());    QStringList allFiles = directory.entryList(QDir::Files | QDir::NoSymLinks);    QStringList matchingFiles;    foreach (QString file, allFiles) {        if (filePattern.exactMatch(file))            matchingFiles << file;    }    showFiles(matchingFiles);}void FindFileDialog::showFiles(const QStringList &files){    foundFilesTree->clear();    for (int i = 0; i < files.count(); ++i) {        QTreeWidgetItem *item = new QTreeWidgetItem(foundFilesTree);        item->setText(0, files[i]);    }    if (files.count() > 0)        foundFilesTree->setCurrentItem(foundFilesTree->topLevelItem(0));}void FindFileDialog::createButtons(){    browseButton = new QToolButton;    browseButton->setText(tr("..."));    connect(browseButton, SIGNAL(clicked()), this, SLOT(browse()));    buttonBox = new QDialogButtonBox(QDialogButtonBox::Open                                     | QDialogButtonBox::Cancel                                     | QDialogButtonBox::Help);    connect(buttonBox, SIGNAL(accepted()), this, SLOT(openFile()));    connect(buttonBox, SIGNAL(rejected()), this, SLOT(reject()));    connect(buttonBox, SIGNAL(helpRequested()), this, SLOT(help()));}void FindFileDialog::createComboBoxes(){    directoryComboBox = new QComboBox;    fileNameComboBox = new QComboBox;    fileNameComboBox->setEditable(true);    fileNameComboBox->setSizePolicy(QSizePolicy::Expanding,                                    QSizePolicy::Preferred);    directoryComboBox->setMinimumContentsLength(30);    directoryComboBox->setSizeAdjustPolicy(            QComboBox::AdjustToMinimumContentsLength);    directoryComboBox->setSizePolicy(QSizePolicy::Expanding,                                     QSizePolicy::Preferred);    connect(fileNameComboBox, SIGNAL(editTextChanged(const QString &)),            this, SLOT(update()));    connect(directoryComboBox, SIGNAL(currentIndexChanged(const QString &)),            this, SLOT(update()));}void FindFileDialog::createFilesTree(){    foundFilesTree = new QTreeWidget;    foundFilesTree->setColumnCount(1);    foundFilesTree->setHeaderLabels(QStringList(tr("Matching Files")));    foundFilesTree->setRootIsDecorated(false);    foundFilesTree->setSelectionMode(QAbstractItemView::SingleSelection);    connect(foundFilesTree, SIGNAL(itemActivated(QTreeWidgetItem *, int)),            this, SLOT(openFile(QTreeWidgetItem *)));}void FindFileDialog::createLabels(){    directoryLabel = new QLabel(tr("Search in:"));    fileNameLabel = new QLabel(tr("File name (including wildcards):"));}void FindFileDialog::createLayout(){    QHBoxLayout *fileLayout = new QHBoxLayout;    fileLayout->addWidget(fileNameLabel);    fileLayout->addWidget(fileNameComboBox);    QHBoxLayout *directoryLayout = new QHBoxLayout;    directoryLayout->addWidget(directoryLabel);    directoryLayout->addWidget(directoryComboBox);    directoryLayout->addWidget(browseButton);    QVBoxLayout *mainLayout = new QVBoxLayout;    mainLayout->addLayout(fileLayout);    mainLayout->addLayout(directoryLayout);    mainLayout->addWidget(foundFilesTree);    mainLayout->addStretch();    mainLayout->addWidget(buttonBox);    setLayout(mainLayout);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -