Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qwidgetplatformfiledialog.cpp
Go to the documentation of this file.
1// Copyright (C) 2017 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
6
7#include <QtWidgets/qfiledialog.h>
8
10
12 : m_dialog(new QFileDialog)
13{
14 setParent(parent);
15
16 connect(m_dialog.data(), &QDialog::accepted, this, &QPlatformDialogHelper::accept);
17 connect(m_dialog.data(), &QDialog::rejected, this, &QPlatformDialogHelper::reject);
18
19 connect(m_dialog.data(), &QFileDialog::fileSelected, this, [this](const QString &file) {
20 emit fileSelected(QUrl::fromLocalFile(file));
21 });
22 connect(m_dialog.data(), &QFileDialog::filesSelected, this, [this](const QList<QString> &files) {
23 QList<QUrl> urls;
24 urls.reserve(files.size());
25 for (const QString &file : files)
26 urls += QUrl::fromLocalFile(file);
27 emit filesSelected(urls);
28 });
29 connect(m_dialog.data(), &QFileDialog::currentChanged, this, [this](const QString &path) {
30 emit currentChanged(QUrl::fromLocalFile(path));
31 });
32 // Not connecting to QFileDialog::directoryUrlEntered() because it's emitted
33 // in fewer places than directoryEntered().
34 connect(m_dialog.data(), &QFileDialog::directoryEntered, this, [this](const QString &path) {
35 directoryEntered(QUrl{path});
36 });
37 connect(m_dialog.data(), &QFileDialog::filterSelected, this, &QWidgetPlatformFileDialog::filterSelected);
38}
39
43
45{
46 return false; // TODO: ?
47}
48
49void QWidgetPlatformFileDialog::setDirectory(const QUrl &directory)
50{
51 m_dialog->setDirectory(directory.toLocalFile());
52}
53
55{
56 return m_dialog->directoryUrl();
57}
58
59void QWidgetPlatformFileDialog::selectFile(const QUrl &filename)
60{
61 m_dialog->selectUrl(filename);
62}
63
65{
66 return m_dialog->selectedUrls();
67}
68
70{
71 // TODO: ?
72}
73
74void QWidgetPlatformFileDialog::selectNameFilter(const QString &filter)
75{
76 m_dialog->selectNameFilter(filter);
77}
78
80{
81 return m_dialog->selectedNameFilter();
82}
83
85{
86 m_dialog->exec();
87}
88
89bool QWidgetPlatformFileDialog::show(Qt::WindowFlags flags, Qt::WindowModality modality, QWindow *parent)
90{
91 QSharedPointer<QFileDialogOptions> options = QPlatformFileDialogHelper::options();
92 m_dialog->setWindowTitle(options->windowTitle());
93 m_dialog->setAcceptMode(static_cast<QFileDialog::AcceptMode>(options->acceptMode()));
94 m_dialog->setFileMode(static_cast<QFileDialog::FileMode>(options->fileMode()));
95 m_dialog->setOptions(static_cast<QFileDialog::Options>(int(options->options())) | QFileDialog::DontUseNativeDialog);
96 m_dialog->setNameFilters(options->nameFilters());
97 m_dialog->setDefaultSuffix(options->defaultSuffix());
98 if (options->isLabelExplicitlySet(QFileDialogOptions::Accept))
99 m_dialog->setLabelText(QFileDialog::Accept, options->labelText(QFileDialogOptions::Accept));
100 if (options->isLabelExplicitlySet(QFileDialogOptions::Reject))
101 m_dialog->setLabelText(QFileDialog::Reject, options->labelText(QFileDialogOptions::Reject));
102
103 return QWidgetPlatformDialog::show(m_dialog.data(), flags, modality, parent);
104}
105
107{
108 m_dialog->hide();
109}
110
111QT_END_NAMESPACE
112
113#include "moc_qwidgetplatformfiledialog_p.cpp"
\inmodule QtCore
Definition qobject.h:105
QList< QUrl > selectedFiles() const override
QString selectedNameFilter() const override
bool defaultNameFilterDisables() const override
void setDirectory(const QUrl &directory) override
void selectFile(const QUrl &filename) override
void selectNameFilter(const QString &filter) override
Combined button and popup list for selecting options.