国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

C++ Qt開(kāi)發(fā):標(biāo)準(zhǔn)Dialog對(duì)話(huà)框組件

這篇具有很好參考價(jià)值的文章主要介紹了C++ Qt開(kāi)發(fā):標(biāo)準(zhǔn)Dialog對(duì)話(huà)框組件。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

Qt 是一個(gè)跨平臺(tái)C++圖形界面開(kāi)發(fā)庫(kù),利用Qt可以快速開(kāi)發(fā)跨平臺(tái)窗體應(yīng)用程序,在Qt中我們可以通過(guò)拖拽的方式將不同組件放到指定的位置,實(shí)現(xiàn)圖形化開(kāi)發(fā)極大的方便了開(kāi)發(fā)效率,本章將重點(diǎn)介紹標(biāo)準(zhǔn)對(duì)話(huà)框QInputDialog、QFileDialog 這兩種對(duì)話(huà)框組件的常用方法及靈活運(yùn)用。

在 Qt 中,標(biāo)準(zhǔn)對(duì)話(huà)框提供了一些常見(jiàn)的用戶(hù)交互界面,用于執(zhí)行特定任務(wù),例如獲取用戶(hù)輸入、選擇文件路徑、顯示消息等。這些對(duì)話(huà)框通常具有標(biāo)準(zhǔn)化的外觀(guān)和行為,使得在不同的平臺(tái)上能夠保持一致性。在一般的開(kāi)發(fā)過(guò)程中,標(biāo)準(zhǔn)對(duì)話(huà)框是開(kāi)發(fā)者常用的工具之一。

1.1 QInputDialog

QInputDialog 類(lèi)提供了一種簡(jiǎn)單的方法,用于獲取用戶(hù)的輸入。它可以用于獲取文本、整數(shù)、浮點(diǎn)數(shù)等類(lèi)型的輸入。

以下是 QInputDialog 類(lèi)的一些常用方法的說(shuō)明和概述,以表格形式列出:

方法 描述
getText(QWidget *parent, const QString &title, const QString &label, QLineEdit::EchoMode mode = QLineEdit::Normal, const QString &text = QString(), bool *ok = nullptr, Qt::WindowFlags flags = Qt::WindowFlags()) -> QString 顯示一個(gè)文本輸入對(duì)話(huà)框,返回用戶(hù)輸入的文本。
getInt(QWidget *parent, const QString &title, const QString &label, int value = 0, int minValue = -2147483647, int maxValue = 2147483647, int step = 1, bool *ok = nullptr, Qt::WindowFlags flags = Qt::WindowFlags()) -> int 顯示一個(gè)整數(shù)輸入對(duì)話(huà)框,返回用戶(hù)輸入的整數(shù)。
getDouble(QWidget *parent, const QString &title, const QString &label, double value = 0, double minValue = -2147483647, double maxValue = 2147483647, int decimals = 1, bool *ok = nullptr, Qt::WindowFlags flags = Qt::WindowFlags()) -> double 顯示一個(gè)浮點(diǎn)數(shù)輸入對(duì)話(huà)框,返回用戶(hù)輸入的浮點(diǎn)數(shù)。
getItem(QWidget *parent, const QString &title, const QString &label, const QStringList &items, int current = 0, bool editable = true, bool *ok = nullptr, Qt::WindowFlags flags = Qt::WindowFlags(), Qt::InputMethodHints inputMethodHints = Qt::ImhNone) -> QString 顯示一個(gè)列表輸入對(duì)話(huà)框,返回用戶(hù)選擇的項(xiàng)。
getMultiLineText(QWidget *parent, const QString &title, const QString &label, const QString &text = QString(), bool *ok = nullptr, Qt::WindowFlags flags = Qt::WindowFlags()) -> QString 顯示一個(gè)多行文本輸入對(duì)話(huà)框,返回用戶(hù)輸入的文本。

這些方法提供了不同類(lèi)型的輸入對(duì)話(huà)框,包括文本、整數(shù)、浮點(diǎn)數(shù)、列表等。通過(guò)這些方法,開(kāi)發(fā)者可以方便地與用戶(hù)交互,獲取用戶(hù)輸入的信息。需要注意的是,這些方法都是靜態(tài)方法,可以直接通過(guò)類(lèi)名 QInputDialog 調(diào)用。

為了方便展示這四種標(biāo)準(zhǔn)輸入框的使用,此處讀者可自行繪制如下所示的頁(yè)面UI布局,并自行導(dǎo)入#include <QInputDialog>#include <QLineEdit>兩個(gè)頭文件;

C++ Qt開(kāi)發(fā):標(biāo)準(zhǔn)Dialog對(duì)話(huà)框組件

1.1.3 文本輸入

通過(guò)getText方法實(shí)現(xiàn),QInputDialog::getText 是 Qt 中用于顯示一個(gè)簡(jiǎn)單的對(duì)話(huà)框,其中包含一個(gè)用于輸入文本的字段的靜態(tài)方法。這個(gè)方法通常用于獲取用戶(hù)輸入的文本。

方法的參數(shù)包括:

  • parent: 對(duì)話(huà)框的父窗口。傳入 nullptr 表示沒(méi)有父窗口。
  • caption: 對(duì)話(huà)框的標(biāo)題。
  • label: 輸入字段上方的文本標(biāo)簽。
  • echo: 輸入文本時(shí)的回顯模式,可以是 QLineEdit::NormalQLineEdit::NoEcho 等。
  • text: 初始文本。
  • ok: 一個(gè)布爾指針,用于獲取對(duì)話(huà)框的 OK 按鈕的狀態(tài)。
  • flags: 可選的窗口標(biāo)志。

方法返回用戶(hù)輸入的文本,如果用戶(hù)取消了對(duì)話(huà)框,則返回一個(gè)空字符串。你可以根據(jù)需要調(diào)整標(biāo)簽、初始文本、回顯模式等參數(shù),以滿(mǎn)足你的具體需求。

該方法要求用戶(hù)傳入標(biāo)題EchoMode等必備參數(shù),需要注意的是如果讀者想要輸入時(shí)隱藏顯示文本則可以直接設(shè)置QLineEdit::Password為密碼模式,此時(shí)輸入的密碼將會(huì)被*號(hào)代替,代碼如下;

void MainWindow::on_pushButton_text_clicked()
{
    QString dlgTitle="輸入文字對(duì)話(huà)框";
    QString txtLabel="請(qǐng)輸入文件名";
    QString defaultInput="新建文件.txt";
    QLineEdit::EchoMode echoMode=QLineEdit::Normal;       // 正常文字輸入
    // QLineEdit::EchoMode echoMode=QLineEdit::Password;  // 密碼輸入

    bool flag = false;
    QString text = QInputDialog::getText(this, dlgTitle,txtLabel, echoMode,defaultInput, &flag);
    if (flag && !text.isEmpty())
    {
        ui->plainTextEdit->appendPlainText(text);
    }
}

代碼運(yùn)行后點(diǎn)擊文本輸入按鈕,則可彈出輸入框,如下所示;

C++ Qt開(kāi)發(fā):標(biāo)準(zhǔn)Dialog對(duì)話(huà)框組件

1.1.2 整數(shù)輸入

通過(guò)getInt方法實(shí)現(xiàn),QInputDialog::getInt 是 Qt 中用于顯示一個(gè)簡(jiǎn)單的對(duì)話(huà)框,其中包含一個(gè)用于輸入整數(shù)的字段的靜態(tài)方法。這個(gè)方法通常用于獲取用戶(hù)輸入的整數(shù)。

方法的參數(shù)包括:

  • parent: 對(duì)話(huà)框的父窗口。傳入 nullptr 表示沒(méi)有父窗口。
  • caption: 對(duì)話(huà)框的標(biāo)題。
  • label: 輸入字段上方的文本標(biāo)簽。
  • value: 初始值。
  • min: 最小值。
  • max: 最大值。
  • step: 步長(zhǎng),表示每次增減的量。
  • ok: 一個(gè)布爾指針,用于獲取對(duì)話(huà)框的 OK 按鈕的狀態(tài)。
  • flags: 可選的窗口標(biāo)志。

方法返回用戶(hù)輸入的整數(shù),如果用戶(hù)取消了對(duì)話(huà)框,則返回 0。你可以根據(jù)需要調(diào)整標(biāo)簽、初始值、范圍、步長(zhǎng)等參數(shù),以滿(mǎn)足你的具體需求。

該方法提供了一個(gè)SpinBox選擇框,在輸入時(shí)可以通過(guò)傳入minValue限制最小值,maxValue限制最大值,通過(guò)stepValue設(shè)置每次步長(zhǎng),代碼如下;

void MainWindow::on_pushButton_int_clicked()
{
    QString dlgTitle="輸入整數(shù)對(duì)話(huà)框";
    QString txtLabel="設(shè)置字體大小";
    int defaultValue=ui->plainTextEdit->font().pointSize();   // 現(xiàn)有字體大小
    int minValue=6, maxValue=50, stepValue=1;                 // 范圍(步長(zhǎng))
    bool flag=false;
    int inputValue = QInputDialog::getInt(this, dlgTitle,txtLabel,defaultValue, minValue,maxValue,stepValue,&flag);
    if (flag)
    {
        QFont font=ui->plainTextEdit->font();
        font.setPointSize(inputValue);
        ui->plainTextEdit->setFont(font);

        // 顯示在編輯框內(nèi)
        QString stringValue = QString::number(inputValue);
        ui->plainTextEdit->appendPlainText(stringValue);
    }
}

代碼運(yùn)行后點(diǎn)擊整數(shù)輸入按鈕,則可彈出輸入框,整數(shù)選擇最小被限制在了6而最大限制為50,如下所示;

C++ Qt開(kāi)發(fā):標(biāo)準(zhǔn)Dialog對(duì)話(huà)框組件

1.1.3 浮點(diǎn)數(shù)輸入

通過(guò)getDouble方法實(shí)現(xiàn),QInputDialog::getDouble 是 Qt 中用于顯示一個(gè)簡(jiǎn)單的對(duì)話(huà)框,其中包含一個(gè)用于輸入浮點(diǎn)數(shù)的字段的靜態(tài)方法。這個(gè)方法通常用于獲取用戶(hù)輸入的浮點(diǎn)數(shù)。

方法的參數(shù)包括:

  • parent: 對(duì)話(huà)框的父窗口。傳入 nullptr 表示沒(méi)有父窗口。
  • caption: 對(duì)話(huà)框的標(biāo)題。
  • label: 輸入字段上方的文本標(biāo)簽。
  • value: 初始值。
  • min: 最小值。
  • max: 最大值。
  • decimals: 小數(shù)位數(shù)。
  • ok: 一個(gè)布爾指針,用于獲取對(duì)話(huà)框的 OK 按鈕的狀態(tài)。
  • flags: 可選的窗口標(biāo)志。

方法返回用戶(hù)輸入的浮點(diǎn)數(shù),如果用戶(hù)取消了對(duì)話(huà)框,則返回 0.0。你可以根據(jù)需要調(diào)整標(biāo)簽、初始值、范圍、小數(shù)位數(shù)等參數(shù),以滿(mǎn)足你的具體需求。

該方法提供了一個(gè)SpinBox選擇框,浮點(diǎn)數(shù)的輸入同樣可以限制輸入長(zhǎng)度,同時(shí)浮點(diǎn)數(shù)也可以指定小數(shù)點(diǎn)的位數(shù),通過(guò)decimals指定為兩位顯示,代碼如下;

void MainWindow::on_pushButton_float_clicked()
{
    QString dlgTitle="輸入浮點(diǎn)數(shù)對(duì)話(huà)框";
    QString txtLabel="輸入一個(gè)浮點(diǎn)數(shù)";
    float defaultValue=3.13;

    float minValue=0, maxValue=10000;  // 范圍
    int decimals=2;                    // 小數(shù)點(diǎn)位數(shù)

    bool flag=false;
    float inputValue = QInputDialog::getDouble(this, dlgTitle,txtLabel,defaultValue, minValue,maxValue,decimals,&flag);
    if (flag)
    {
        QString str=QString::asprintf("輸入了一個(gè)浮點(diǎn)數(shù):%.2f",inputValue);
        ui->plainTextEdit->appendPlainText(str);
    }
}

代碼運(yùn)行后點(diǎn)擊浮點(diǎn)數(shù)輸入按鈕,則可彈出輸入框,浮點(diǎn)數(shù)選擇最小被限制在了0而最大限制為10000,默認(rèn)值為3.13保留長(zhǎng)度為兩位,如下所示;

C++ Qt開(kāi)發(fā):標(biāo)準(zhǔn)Dialog對(duì)話(huà)框組件

1.1.4 單選框輸入

通過(guò)getItem方法實(shí)現(xiàn),該方法適合于只讓用戶(hù)選擇特定的內(nèi)容,QInputDialog::getItem 是 Qt 中用于顯示一個(gè)簡(jiǎn)單的對(duì)話(huà)框,其中包含一個(gè)下拉框(QComboBox)供用戶(hù)選擇的靜態(tài)方法。這個(gè)方法通常用于獲取用戶(hù)從列表中選擇的項(xiàng)。

方法的參數(shù)包括:

  • parent: 對(duì)話(huà)框的父窗口。傳入 nullptr 表示沒(méi)有父窗口。
  • caption: 對(duì)話(huà)框的標(biāo)題。
  • label: 下拉框上方的文本標(biāo)簽。
  • items: 字符串列表,表示下拉框中的選項(xiàng)。
  • currentItem: 初始時(shí)被選中的項(xiàng)的索引。
  • editable: 是否允許用戶(hù)編輯下拉框中的文本。
  • ok: 一個(gè)布爾指針,用于獲取對(duì)話(huà)框的 OK 按鈕的狀態(tài)。在這個(gè)例子中,我們傳遞了 nullptr,因?yàn)槲覀儾魂P(guān)心 OK 按鈕的狀態(tài)。
  • flags: 可選的窗口標(biāo)志。

方法返回用戶(hù)選擇的項(xiàng),如果用戶(hù)取消了對(duì)話(huà)框,則返回一個(gè)空字符串。你可以根據(jù)需要調(diào)整標(biāo)簽、初始選中項(xiàng)、是否可編輯等參數(shù),以滿(mǎn)足你的具體需求。代碼如下所示;

void MainWindow::on_pushButton_checkbox_clicked()
{
    QStringList items;                        // 列表內(nèi)容
    items <<"優(yōu)秀"<<"良好"<<"合格"<<"不合格";    // 放入列表

    QString dlgTitle="條目選擇對(duì)話(huà)框";
    QString txtLabel="請(qǐng)選擇級(jí)別";
    int curIndex=0;                            // 初始選擇項(xiàng)
    bool editable=false;                       // 是否可編輯
    bool flag=false;
    QString text = QInputDialog::getItem(this, dlgTitle,txtLabel,items,curIndex,editable,&flag);

    if (flag && !text.isEmpty())
    {
        ui->plainTextEdit->appendPlainText(text);
    }
}

代碼運(yùn)行后點(diǎn)擊單選框輸入按鈕,則可彈出單選框窗體,讀者可選擇對(duì)應(yīng)的選項(xiàng),如下所示;

C++ Qt開(kāi)發(fā):標(biāo)準(zhǔn)Dialog對(duì)話(huà)框組件

2.1 QFileDialog

QFileDialog 類(lèi)用于打開(kāi)和保存文件的標(biāo)準(zhǔn)對(duì)話(huà)框。它提供了用戶(hù)友好的界面,使得用戶(hù)可以輕松地選擇文件或目錄,在使用時(shí)同樣需要導(dǎo)入#include <QFileDialog>頭文件。

以下是 QFileDialog 類(lèi)的一些常用方法的說(shuō)明和概述,以表格形式列出:

方法 描述
getOpenFileName(QWidget *parent = nullptr, const QString &caption = QString(), const QString &dir = QString(), const QString &filter = QString(), QString *selectedFilter = nullptr, Options options = 0) 打開(kāi)文件對(duì)話(huà)框,獲取用戶(hù)選擇的文件名。
getOpenFileNames(QWidget *parent = nullptr, const QString &caption = QString(), const QString &dir = QString(), const QString &filter = QString(), QString *selectedFilter = nullptr, Options options = 0) 打開(kāi)文件對(duì)話(huà)框,獲取用戶(hù)選擇的多個(gè)文件名。
getSaveFileName(QWidget *parent = nullptr, const QString &caption = QString(), const QString &dir = QString(), const QString &filter = QString(), QString *selectedFilter = nullptr, Options options = 0) 保存文件對(duì)話(huà)框,獲取用戶(hù)輸入的文件名。
getExistingDirectory(QWidget *parent = nullptr, const QString &caption = QString(), const QString &dir = QString(), Options options = ShowDirsOnlyDontResolveSymlinks) 用于在文件系統(tǒng)中獲取現(xiàn)有目錄的路徑。
getExistingDirectoryUrl(QWidget *parent = nullptr, const QString &caption = QString(), const QUrl &dir = QUrl(), QFileDialog::Options options = ShowDirsOnlyDontResolveSymlinks) 用于在文件系統(tǒng)中獲取現(xiàn)有目錄的路徑。
getSaveFileUrl(QWidget *parent = nullptr, const QString &caption = QString(), const QUrl &dir = QUrl(), const QString &filter = QString(), QString *selectedFilter = nullptr, Options options = 0) 保存文件對(duì)話(huà)框,獲取用戶(hù)輸入的文件的 URL。
getOpenFileUrl(QWidget *parent = nullptr, const QString &caption = QString(), const QUrl &dir = QUrl(), const QString &filter = QString(), QString *selectedFilter = nullptr, Options options = 0) 打開(kāi)文件對(duì)話(huà)框,獲取用戶(hù)選擇的文件的 URL。
getOpenFileUrls(QWidget *parent = nullptr, const QString &caption = QString(), const QUrl &dir = QUrl(), const QString &filter = QString(), QString *selectedFilter = nullptr, Options options = 0) 打開(kāi)文件對(duì)話(huà)框,獲取用戶(hù)選擇的多個(gè)文件的 URL。
getSaveFileUrls(QWidget *parent = nullptr, const QString &caption = QString(), const QUrl &dir = QUrl(), const QString &filter = QString(), QString *selectedFilter = nullptr, Options options = 0) 保存文件對(duì)話(huà)框,獲取用戶(hù)輸入的多個(gè)文件的 URL。
setLabelText(QFileDialog::DialogLabel label, const QString &text) 設(shè)置對(duì)話(huà)框中指定標(biāo)簽的文本。
setLabelText(QFileDialog::DialogLabel label, const QUrl &url) 設(shè)置對(duì)話(huà)框中指定標(biāo)簽的文本為 URL。
setOption(QFileDialog::Option option, bool on = true) 啟用或禁用對(duì)話(huà)框的指定選項(xiàng)。
setOptions(QFileDialog::Options options) 設(shè)置對(duì)話(huà)框的選項(xiàng)。
setFileMode(QFileDialog::FileMode mode) 設(shè)置對(duì)話(huà)框的文件模式(打開(kāi)、保存、目錄選擇等)。
setAcceptMode(QFileDialog::AcceptMode mode) 設(shè)置對(duì)話(huà)框的接受模式,是打開(kāi)文件還是保存文件。
setViewMode(QFileDialog::ViewMode mode) 設(shè)置對(duì)話(huà)框的視圖模式,如詳細(xì)視圖、圖標(biāo)視圖等。
setDirectory(const QString &directory) 設(shè)置對(duì)話(huà)框打開(kāi)時(shí)的默認(rèn)目錄。
setDirectoryUrl(const QUrl &directory) 設(shè)置對(duì)話(huà)框打開(kāi)時(shí)的默認(rèn)目錄的 URL。
setFilter(const QString &filter) 設(shè)置對(duì)話(huà)框的文件類(lèi)型過(guò)濾器,如"文本文件 (.txt);;所有文件 ()"。
setNameFilter(const QString &filter) 設(shè)置對(duì)話(huà)框的文件名過(guò)濾器,如"*.txt"。
setDefaultSuffix(const QString &suffix) 設(shè)置默認(rèn)的文件后綴,用于在用戶(hù)未指定文件后綴時(shí)追加到文件名。
setMimeTypeFilters(const QStringList &filters) 設(shè)置對(duì)話(huà)框的 MIME 類(lèi)型過(guò)濾器。
setSidebarUrls(const QList<QUrl> &urls) 設(shè)置對(duì)話(huà)框側(cè)邊欄的 URL 列表。
setProxyModel(QAbstractProxyModel *proxyModel) 設(shè)置對(duì)話(huà)框使用的代理模型。
setHistory(const QStringList &paths) 設(shè)置對(duì)話(huà)框歷史記錄的路徑列表。
setSidebarUrls(const QList<QUrl> &urls) 設(shè)置對(duì)話(huà)框側(cè)邊欄的 URL 列表。
setProxyModel(QAbstractProxyModel *proxyModel) 設(shè)置對(duì)話(huà)框使用的代理模型。
setHistory(const QStringList &paths) 設(shè)置對(duì)話(huà)框歷史記錄的路徑列表。
setDefaultSuffix(const QString &suffix) 設(shè)置默認(rèn)的文件后綴,用于在用戶(hù)未指定文件后綴時(shí)追加到文件名。
setMimeTypeFilters(const QStringList &filters) 設(shè)置對(duì)話(huà)框的 MIME 類(lèi)型過(guò)濾器。
setSidebarUrls(const QList<QUrl> &urls) 設(shè)置對(duì)話(huà)框側(cè)邊欄的 URL 列表。
setProxyModel(QAbstractProxyModel *proxyModel) 設(shè)置對(duì)話(huà)框使用的代理模型。
setHistory(const QStringList &paths) 設(shè)置對(duì)話(huà)框歷史記錄的路徑列表。
setDefaultSuffix(const QString &suffix) 設(shè)置默認(rèn)的文件后綴,用于在用戶(hù)未指定文件后綴時(shí)追加到文件名。
setMimeTypeFilters(const QStringList &filters) 設(shè)置對(duì)話(huà)框的 MIME 類(lèi)型過(guò)濾器。
setSidebarUrls(const QList<QUrl> &urls) 設(shè)置對(duì)話(huà)框側(cè)邊欄的 URL 列表。
setProxyModel(QAbstractProxyModel *proxyModel) 設(shè)置對(duì)話(huà)框使用的代理模型。
setHistory(const QStringList &paths) 設(shè)置對(duì)話(huà)框歷史記錄的路徑列表。
setDefaultSuffix(const QString &suffix) 設(shè)置默認(rèn)的文件后綴,用于在用戶(hù)未指定文件后綴時(shí)追加到文件名。
setMimeTypeFilters(const QStringList &filters) 設(shè)置對(duì)話(huà)框的 MIME 類(lèi)型過(guò)濾器。
setSidebarUrls(const QList<QUrl> &urls) 設(shè)置對(duì)話(huà)框側(cè)邊欄的 URL 列表。
setProxyModel(QAbstractProxyModel *proxyModel) 設(shè)置對(duì)話(huà)框使用的代理模型。
setHistory(const QStringList &paths) 設(shè)置對(duì)話(huà)框歷史記錄的路徑列表。
setDefaultSuffix(const QString &suffix) 設(shè)置默認(rèn)的文件后綴,用于在用戶(hù)未指定文件后綴時(shí)追加到文件名。
setMimeTypeFilters(const QStringList &filters) 設(shè)置對(duì)話(huà)框的 MIME 類(lèi)型過(guò)濾器。
setSidebarUrls(const QList<QUrl> &urls) 設(shè)置對(duì)話(huà)框側(cè)邊欄的 URL 列表。
setProxyModel(QAbstractProxyModel *proxyModel) 設(shè)置對(duì)話(huà)框使用的代理模型。
setHistory(const QStringList &paths) 設(shè)置對(duì)話(huà)框歷史記錄的路徑列表。
setLabelText(QFileDialog::DialogLabel label, const QString &text) 設(shè)置對(duì)話(huà)框中指定標(biāo)簽的文本。
setLabelText(QFileDialog::DialogLabel label, const QUrl &url) 設(shè)置對(duì)話(huà)框中指定標(biāo)簽的文本為 URL。
setOption(QFileDialog::Option option, bool on = true) 啟用或禁用對(duì)話(huà)框的指定選項(xiàng)。
setOptions(QFileDialog::Options options) 設(shè)置對(duì)話(huà)框的選項(xiàng)。
setFileMode(QFileDialog::FileMode mode) 設(shè)置對(duì)話(huà)框的文件模式(打開(kāi)、保存、目錄選擇等)。
setAcceptMode(QFileDialog::AcceptMode mode) 設(shè)置對(duì)話(huà)框的接受模式,是打開(kāi)文件還是保存文件。
setViewMode(QFileDialog::ViewMode mode) 設(shè)置對(duì)話(huà)框的視圖模式,如詳細(xì)視圖、圖標(biāo)視圖等。
setDirectory(const QString &directory) 設(shè)置對(duì)話(huà)框打開(kāi)時(shí)的默認(rèn)目錄。
setDirectoryUrl(const QUrl &directory) 設(shè)置對(duì)話(huà)框打開(kāi)時(shí)的默認(rèn)目錄的 URL。
setFilter(const QString &filter) 設(shè)置對(duì)話(huà)框的文件類(lèi)型過(guò)濾器,如"文本文件 (.txt);;所有文件 ()"。
setNameFilter(const QString &filter) 設(shè)置對(duì)話(huà)框的文件名過(guò)濾器,如"*.txt"。
setDefaultSuffix(const QString &suffix) 設(shè)置默認(rèn)的文件后綴,用于在用戶(hù)未指定文件后綴時(shí)追加到文件名。
setMimeTypeFilters(const QStringList &filters) 設(shè)置對(duì)話(huà)框的 MIME 類(lèi)型過(guò)濾器。
setSidebarUrls(const QList<QUrl> &urls) 設(shè)置對(duì)話(huà)框側(cè)邊欄的 URL 列表。
setProxyModel(QAbstractProxyModel *proxyModel) 設(shè)置對(duì)話(huà)框使用的代理模型。
setHistory(const QStringList &paths) 設(shè)置對(duì)話(huà)框歷史記錄的路徑列表。

這些方法提供了一系列功能,包括打開(kāi)文件、保存文件、選擇目錄等,以及對(duì)對(duì)話(huà)框的一些屬性進(jìn)行設(shè)置。這樣,開(kāi)發(fā)者可以方便地使用這些方法構(gòu)建出符合應(yīng)用需求的文件對(duì)話(huà)框。需要注意的是,這些方法中的許多參數(shù)都有默認(rèn)值,因此在大多數(shù)情況下,開(kāi)發(fā)者可以選擇性地調(diào)用這些方法。

2.1.1 選擇文件

在選擇單個(gè)文件時(shí)可以通過(guò)調(diào)用getOpenFileName方法實(shí)現(xiàn),QFileDialog::getOpenFileName 是 Qt 中用于顯示打開(kāi)文件對(duì)話(huà)框并獲取用戶(hù)選擇的文件名的靜態(tài)方法。它通常用于在用戶(hù)需要選擇一個(gè)文件進(jìn)行打開(kāi)操作時(shí),例如加載文件等場(chǎng)景。

方法的參數(shù)包括:

  • parent: 對(duì)話(huà)框的父窗口。傳入 nullptr 表示沒(méi)有父窗口。
  • caption: 對(duì)話(huà)框的標(biāo)題。
  • dir: 默認(rèn)的目錄路徑。
  • filter: 文件類(lèi)型過(guò)濾器,用于篩選可打開(kāi)的文件類(lèi)型??梢允褂梅痔?hào)分隔多個(gè)過(guò)濾器,例如 "Text Files (*.txt);;All Files (*)"。

方法返回用戶(hù)選擇的文件名,如果用戶(hù)取消了對(duì)話(huà)框,則返回一個(gè)空字符串。你可以根據(jù)需要調(diào)整過(guò)濾器、默認(rèn)目錄等參數(shù),以滿(mǎn)足你的具體需求。

通過(guò)最后一個(gè)參數(shù)來(lái)指定需要打開(kāi)的文件類(lèi)型,通??蓚魅胍唤M字符串來(lái)實(shí)現(xiàn)過(guò)濾,當(dāng)打開(kāi)后可以通過(guò)aFileName拿到文件具體路徑,代碼如下;

void MainWindow::on_pushButton_file_clicked()
{
    QString curPath=QDir::currentPath();                                       // 獲取系統(tǒng)當(dāng)前目錄
    //  QString  curPath=QCoreApplication::applicationDirPath();               // 獲取應(yīng)用程序的路徑
    QString dlgTitle="選擇一個(gè)文件";                                             // 對(duì)話(huà)框標(biāo)題
    QString filter="文本文件(*.txt);;圖片文件(*.jpg *.gif *.png);;所有文件(*.*)";  // 文件過(guò)濾器

    QString aFileName=QFileDialog::getOpenFileName(this,dlgTitle,curPath,filter);

    if (!aFileName.isEmpty())
    {
        ui->plainTextEdit->appendPlainText(aFileName);
    }
}

打開(kāi)效果圖如下所示;

C++ Qt開(kāi)發(fā):標(biāo)準(zhǔn)Dialog對(duì)話(huà)框組件

同理,當(dāng)我們需要選擇多個(gè)文件并打開(kāi)時(shí)只需要將QString修改為QStringList這樣當(dāng)文件被打開(kāi)后則可以通過(guò)循環(huán)輸出fileList列表來(lái)獲取所有路徑信息,如下代碼所示;

void MainWindow::on_pushButton_multiple_clicked()
{
    // QString curPath=QCoreApplication::applicationDirPath();                // 獲取應(yīng)用程序的路徑
    QString curPath=QDir::currentPath();                                      // 獲取系統(tǒng)當(dāng)前目錄
    QString dlgTitle="選擇多個(gè)文件";                                            // 對(duì)話(huà)框標(biāo)題
    QString filter="文本文件(*.txt);;圖片文件(*.jpg *.gif *.png);;所有文件(*.*)"; // 文件過(guò)濾器

    QStringList fileList=QFileDialog::getOpenFileNames(this,dlgTitle,curPath,filter);
    for (int i=0; i<fileList.count();i++)
    {
        // 循環(huán)將文件路徑添加到列表中
        ui->plainTextEdit->appendPlainText(fileList.at(i));
    }
}

在選擇時(shí)可以通過(guò)拖拽選中的方式選擇多個(gè)文件,如下圖所示;

C++ Qt開(kāi)發(fā):標(biāo)準(zhǔn)Dialog對(duì)話(huà)框組件

2.1.2 選擇目錄

選擇目錄時(shí)可以調(diào)用getExistingDirectory方法,QFileDialog::getExistingDirectory 是 Qt 中用于顯示選擇目錄對(duì)話(huà)框并獲取用戶(hù)選擇的目錄的靜態(tài)方法。它通常用于在用戶(hù)需要選擇一個(gè)目錄時(shí),例如保存文件到特定目錄或加載文件等場(chǎng)景。

方法的參數(shù)包括:

  • parent: 對(duì)話(huà)框的父窗口。傳入 nullptr 表示沒(méi)有父窗口。
  • caption: 對(duì)話(huà)框的標(biāo)題。
  • dir: 默認(rèn)的目錄路徑。
  • options: 對(duì)話(huà)框的選項(xiàng)。在示例中,使用了 QFileDialog::ShowDirsOnly 表示只顯示目錄,并且 QFileDialog::DontResolveSymlinks 表示不解析符號(hào)鏈接。

方法返回用戶(hù)選擇的目錄路徑,如果用戶(hù)取消了對(duì)話(huà)框,則返回一個(gè)空字符串。你可以根據(jù)需要調(diào)整默認(rèn)目錄、選項(xiàng)等參數(shù),以滿(mǎn)足你的具體需求。

void MainWindow::on_pushButton_dirfile_clicked()
{
    QString curPath=QCoreApplication::applicationDirPath();    // 獲取應(yīng)用程序的路徑
    // QString curPath=QDir::currentPath();                    // 獲取系統(tǒng)當(dāng)前目錄

    // 調(diào)用打開(kāi)文件對(duì)話(huà)框打開(kāi)一個(gè)文件
    QString dlgTitle="選擇一個(gè)目錄";                             // 對(duì)話(huà)框標(biāo)題
    QString selectedDir=QFileDialog::getExistingDirectory(this,dlgTitle,curPath,QFileDialog::ShowDirsOnly);
    if (!selectedDir.isEmpty())
    {
        ui->plainTextEdit->appendPlainText(selectedDir);
    }
}

選擇目錄輸出效果圖如下所示;

C++ Qt開(kāi)發(fā):標(biāo)準(zhǔn)Dialog對(duì)話(huà)框組件

2.1.3 保存文件

保存文件可以通過(guò)調(diào)用getSaveFileName方法來(lái)實(shí)現(xiàn),QFileDialog::getSaveFileName 是 Qt 中用于顯示保存文件對(duì)話(huà)框并獲取用戶(hù)選擇的文件名的靜態(tài)方法。它通常用于在用戶(hù)將文件保存到磁盤(pán)時(shí)獲取文件的保存路徑。

該方法的參數(shù)包括:

  • parent: 對(duì)話(huà)框的父窗口。傳入 nullptr 表示沒(méi)有父窗口。
  • caption: 對(duì)話(huà)框的標(biāo)題。
  • dir: 默認(rèn)的目錄路徑。
  • filter: 文件類(lèi)型過(guò)濾器,用于篩選可保存的文件類(lèi)型??梢允褂梅痔?hào)分隔多個(gè)過(guò)濾器,例如 "Text Files (*.txt);;All Files (*)"。

方法返回用戶(hù)選擇的文件名,如果用戶(hù)取消了對(duì)話(huà)框,則返回一個(gè)空字符串。你可以根據(jù)需要調(diào)整過(guò)濾器、默認(rèn)目錄等參數(shù),以滿(mǎn)足你的具體需求。

void MainWindow::on_pushButton_save_clicked()
{
    QString curPath=QCoreApplication::applicationDirPath();                  // 獲取應(yīng)用程序的路徑
    QString dlgTitle="保存文件";                                              // 對(duì)話(huà)框標(biāo)題
    QString filter="文本文件(*.txt);;h文件(*.h);;C++文件(.cpp);;所有文件(*.*)"; // 文件過(guò)濾器
    QString aFileName=QFileDialog::getSaveFileName(this,dlgTitle,curPath,filter);
    if (!aFileName.isEmpty())
    {
        ui->plainTextEdit->appendPlainText(aFileName);
    }
}

保存文件對(duì)話(huà)框如下圖所示,當(dāng)點(diǎn)擊后則可以將文件保存到特定目錄下;

C++ Qt開(kāi)發(fā):標(biāo)準(zhǔn)Dialog對(duì)話(huà)框組件文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-760162.html

到了這里,關(guān)于C++ Qt開(kāi)發(fā):標(biāo)準(zhǔn)Dialog對(duì)話(huà)框組件的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀(guān)點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【QT】標(biāo)準(zhǔn)對(duì)話(huà)框

    【QT】標(biāo)準(zhǔn)對(duì)話(huà)框

    目錄 1?概述 2 QFileDialog對(duì)話(huà)框 1.選擇打開(kāi)一個(gè)文件 2.選擇打開(kāi)多個(gè)文件 3.選擇已有目錄 4.選擇保存文件名 3 QColorDialog對(duì)話(huà)框 4 QFontDialog對(duì)話(huà)框 5 QInputDialog標(biāo)準(zhǔn)輸入對(duì)話(huà)框 1.輸入文字 2.輸入整數(shù) 3.輸入浮點(diǎn)數(shù) 4.下拉列表選擇輸入 6 QMessageBox消息對(duì)話(huà)框 1.函數(shù)原型 2.簡(jiǎn)單信息

    2024年02月02日
    瀏覽(96)
  • Qt標(biāo)準(zhǔn)對(duì)話(huà)框設(shè)置

    Qt標(biāo)準(zhǔn)對(duì)話(huà)框設(shè)置,設(shè)置字體、調(diào)色板、進(jìn)度條等。

    2024年02月22日
    瀏覽(98)
  • Android開(kāi)發(fā) Dialog對(duì)話(huà)框 DatePickerDialog

    Android開(kāi)發(fā) Dialog對(duì)話(huà)框 DatePickerDialog

    1. AlertDialog AlertDialog是彈出的提醒對(duì)話(huà)框,有提示,確認(rèn),選擇等功能。 沒(méi)有公開(kāi)的構(gòu)造方法,一般用AlertDialog.Builder來(lái)完成參數(shù)設(shè)置,最后調(diào)用create方法創(chuàng)建。 參數(shù)設(shè)置常用的方法: ?代碼: 效果圖: ? 2. DatePickerDialog DatePickerDialog在 AlertDialog上添加了日期選擇器DatePicker,

    2023年04月09日
    瀏覽(23)
  • Python Qt6快速入門(mén)-自定義對(duì)話(huà)框和標(biāo)準(zhǔn)對(duì)話(huà)框

    對(duì)話(huà)框是有用的 GUI 組件,可以與用戶(hù)進(jìn)行交流(因此得名對(duì)話(huà)框)。 它們通常用于文件打開(kāi)/保存、設(shè)置、首選項(xiàng)或不適合應(yīng)用程序主 UI 的功能。 它們是位于主應(yīng)用程序前面的小模態(tài)(或阻塞)窗口,直到它們被關(guān)閉。 Qt 為最常見(jiàn)的用例提供

    2024年02月03日
    瀏覽(29)
  • QT—5種標(biāo)準(zhǔn)對(duì)話(huà)框使用詳解

    QT—5種標(biāo)準(zhǔn)對(duì)話(huà)框使用詳解

    對(duì)話(huà)框是 GUI 程序中不可或缺的組成部分。一些不適合在主窗口實(shí)現(xiàn)的功能組件都必須放在對(duì)話(huà)框中設(shè)置。對(duì)話(huà)框通常會(huì)是一個(gè)頂層窗口,出現(xiàn)在程序最上層,用于實(shí)現(xiàn)短期任務(wù)或者簡(jiǎn)潔的用戶(hù)交互。所謂標(biāo)準(zhǔn)對(duì)話(huà)框,是 Qt 內(nèi)置的一系列對(duì)話(huà)框,用于簡(jiǎn)化開(kāi)發(fā)。事實(shí)上,有很

    2023年04月20日
    瀏覽(87)
  • QT中在MainWindow(主窗口)中創(chuàng)建Dialog(對(duì)話(huà)框)兩種方式優(yōu)缺點(diǎn)對(duì)比

    QT中在MainWindow(主窗口)中創(chuàng)建Dialog(對(duì)話(huà)框)兩種方式優(yōu)缺點(diǎn)對(duì)比

    新建窗口工程 利用ui工具在Window中創(chuàng)建三個(gè)按鈕 打開(kāi)對(duì)話(huà)框 關(guān)閉對(duì)話(huà)框 改變?nèi)齻€(gè)按鈕的名稱(chēng) openDialog closeDialog 在工程中添加QDialog類(lèi),名字是Dialog 在Dialog中創(chuàng)建label控件,寫(xiě)上HelloWorld 最關(guān)鍵的一步,在window的類(lèi)中創(chuàng)建Dialog私有對(duì)象指針 在window.cpp中編寫(xiě)指針myDialog的初始化代

    2024年02月07日
    瀏覽(27)
  • 06-2_Qt 5.9 C++開(kāi)發(fā)指南_自定義對(duì)話(huà)框及其調(diào)用

    06-2_Qt 5.9 C++開(kāi)發(fā)指南_自定義對(duì)話(huà)框及其調(diào)用

    本篇介紹到的對(duì)話(huà)框及其調(diào)用實(shí)例較為復(fù)雜但十分詳細(xì),如果做了解可以先參考:QT從入門(mén)到實(shí)戰(zhàn)x篇_13_模態(tài)和非模態(tài)對(duì)話(huà)框創(chuàng)建。 在一個(gè)應(yīng)用程序設(shè)計(jì)中,為了實(shí)現(xiàn)一些特定的功能,必須設(shè)計(jì)自定義對(duì)話(huà)框。自定義對(duì)話(huà)框的設(shè)計(jì)一般從QDialog 繼承,并且可以采用 UI 設(shè)計(jì)器可

    2024年02月13日
    瀏覽(36)
  • 解決問(wèn)題:Element ui組件中Dialog對(duì)話(huà)框只顯示遮罩層,不顯示彈框內(nèi)容

    解決問(wèn)題:Element ui組件中Dialog對(duì)話(huà)框只顯示遮罩層,不顯示彈框內(nèi)容

    以下是Dialog 對(duì)話(huà)框的基本用法: 這個(gè)時(shí)候頁(yè)面只顯示了遮罩層,但是不顯示彈框的內(nèi)容,查閱文檔后,發(fā)現(xiàn)有這樣一條: append-to-body的默認(rèn)值是false,所以需要自己在el-dialog標(biāo)簽中手動(dòng)設(shè)置為true, ?加上之后彈框內(nèi)容就可以顯示了。

    2024年02月06日
    瀏覽(99)
  • vue-pc端elementui-統(tǒng)一修改問(wèn)題-Dialog 對(duì)話(huà)框點(diǎn)擊空白關(guān)閉問(wèn)題-element-所有組件層級(jí)問(wèn)題

    實(shí)際開(kāi)發(fā)我們經(jīng)常發(fā)現(xiàn)dialog彈出框默認(rèn)點(diǎn)擊遮罩層空白地方就會(huì)關(guān)閉-有屬性可以關(guān)閉 但是經(jīng)常會(huì)圖方便-或者已經(jīng)寫(xiě)完了,不想一個(gè)個(gè)寫(xiě),可以在main.js進(jìn)行統(tǒng)一關(guān)閉 當(dāng)我們?cè)陧?yè)面進(jìn)行復(fù)雜設(shè)計(jì)和層級(jí)關(guān)閉改變,會(huì)發(fā)現(xiàn)右上角的退出登錄彈出款在我們頁(yè)面之下 這是我們不管怎

    2024年02月13日
    瀏覽(92)
  • Qt開(kāi)發(fā):自定義對(duì)話(huà)框

    Qt開(kāi)發(fā):自定義對(duì)話(huà)框

    1、添加自定義對(duì)話(huà)類(lèi)框。 首先向該項(xiàng)目中添加Qt設(shè)計(jì)師界面類(lèi)。界面模板選擇 Dialog without Buttons,類(lèi)名改為MyDialog。然后在設(shè)計(jì)模式中向窗口添加兩個(gè)Push Button,并且分別更改其顯示文本為“進(jìn)入主界面”和“退出程序” ? ? ? ? ? 這個(gè)accept()函數(shù)是QDialog類(lèi)中的一個(gè)槽,對(duì)于一個(gè)

    2024年02月11日
    瀏覽(97)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包