QFileDialog 案例

基本概念

  • QFileDialog::getExistingDirectory
  • QFileDialog::getOpenFileName
  • QFileDialog::getOpenFileNames
  • QFileDialog::getSaveFileName

案例

void Dialog::on_btnDialogDir_clicked()
{
    QFileDialog::Options options;
    options |= QFileDialog::ShowDirsOnly;

    QString directory = QFileDialog::getExistingDirectory(
                        this,
                        "请选择文件夹",
                        ui->labelDialogDir->text(),
                        options);
    if (!directory.isEmpty())
    {
        ui->labelDialogDir->setText(directory);
    }
}


void Dialog::on_btnDialogFileName_clicked()
{
    QFileDialog::Options options;
    QString selectedFilter;

    QString fileName = QFileDialog::getOpenFileName(
                       this,
                       "请选择文件",
                       ui->labelDialogFileName->text(),
                       "All Files (*);;Text Files (*.txt)",
                       &selectedFilter,
                       options);

    qDebug() << selectedFilter;

    if (!fileName.isEmpty())
    {
        ui->labelDialogFileName->setText(fileName);
    }
}


void Dialog::on_btnDialogFileNames_clicked()
{
    QFileDialog::Options options;
    QString selectedFilter;

    QStringList files = QFileDialog::getOpenFileNames(
                        this,
                        "请选择多个文件",
                        ui->labelDialogFileNames->text(),
                        "All Files (*);;Text Files (*.txt)",
                        &selectedFilter,
                        options);
    if (!files.empty())
    {
        ui->labelDialogFileNames->setText(QString("[%1]").arg(files.join(", ")));
    }
}


void Dialog::on_btnDialogSaveFile_clicked()
{
    QFileDialog::Options options;
    QString selectedFilter;

    QString fileName = QFileDialog::getSaveFileName(
                       this,
                       "请保存文件",
                       ui->labelDialogSaveFile->text(),
                       "All Files (*);;Text Files (*.txt)",
                       &selectedFilter,
                       options);

    qDebug() << selectedFilter;

    if (!fileName.isEmpty())
    {
        ui->labelDialogSaveFile->setText(fileName);
    }
}