C++ Qt開發:標準Dialog對話框組件

来源:https://www.cnblogs.com/LyShark/archive/2023/12/17/17903240.html
-Advertisement-
Play Games

Qt 是一個跨平臺C++圖形界面開發庫,利用Qt可以快速開發跨平臺窗體應用程式,在Qt中我們可以通過拖拽的方式將不同組件放到指定的位置,實現圖形化開發極大的方便了開發效率,本章將重點介紹標準對話框`QInputDialog`、`QFileDialog `這兩種對話框組件的常用方法及靈活運用。在 Qt... ...


Qt 是一個跨平臺C++圖形界面開發庫,利用Qt可以快速開發跨平臺窗體應用程式,在Qt中我們可以通過拖拽的方式將不同組件放到指定的位置,實現圖形化開發極大的方便了開發效率,本章將重點介紹標準對話框QInputDialogQFileDialog 這兩種對話框組件的常用方法及靈活運用。

在 Qt 中,標準對話框提供了一些常見的用戶交互界面,用於執行特定任務,例如獲取用戶輸入、選擇文件路徑、顯示消息等。這些對話框通常具有標準化的外觀和行為,使得在不同的平臺上能夠保持一致性。在一般的開發過程中,標準對話框是開發者常用的工具之一。

1.1 QInputDialog

QInputDialog 類提供了一種簡單的方法,用於獲取用戶的輸入。它可以用於獲取文本、整數、浮點數等類型的輸入。

以下是 QInputDialog 類的一些常用方法的說明和概述,以表格形式列出:

方法 描述
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 顯示一個文本輸入對話框,返回用戶輸入的文本。
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 顯示一個整數輸入對話框,返回用戶輸入的整數。
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 顯示一個浮點數輸入對話框,返回用戶輸入的浮點數。
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 顯示一個列表輸入對話框,返回用戶選擇的項。
getMultiLineText(QWidget *parent, const QString &title, const QString &label, const QString &text = QString(), bool *ok = nullptr, Qt::WindowFlags flags = Qt::WindowFlags()) -> QString 顯示一個多行文本輸入對話框,返回用戶輸入的文本。

這些方法提供了不同類型的輸入對話框,包括文本、整數、浮點數、列表等。通過這些方法,開發者可以方便地與用戶交互,獲取用戶輸入的信息。需要註意的是,這些方法都是靜態方法,可以直接通過類名 QInputDialog 調用。

為了方便展示這四種標準輸入框的使用,此處讀者可自行繪製如下所示的頁面UI佈局,並自行導入#include <QInputDialog>#include <QLineEdit>兩個頭文件;

1.1.3 文本輸入

通過getText方法實現,QInputDialog::getText 是 Qt 中用於顯示一個簡單的對話框,其中包含一個用於輸入文本的欄位的靜態方法。這個方法通常用於獲取用戶輸入的文本。

方法的參數包括:

  • parent: 對話框的父視窗。傳入 nullptr 表示沒有父視窗。
  • caption: 對話框的標題。
  • label: 輸入欄位上方的文本標簽。
  • echo: 輸入文本時的回顯模式,可以是 QLineEdit::NormalQLineEdit::NoEcho 等。
  • text: 初始文本。
  • ok: 一個布爾指針,用於獲取對話框的 OK 按鈕的狀態。
  • flags: 可選的視窗標誌。

方法返回用戶輸入的文本,如果用戶取消了對話框,則返回一個空字元串。你可以根據需要調整標簽、初始文本、回顯模式等參數,以滿足你的具體需求。

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

void MainWindow::on_pushButton_text_clicked()
{
    QString dlgTitle="輸入文字對話框";
    QString txtLabel="請輸入文件名";
    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);
    }
}

代碼運行後點擊文本輸入按鈕,則可彈出輸入框,如下所示;

1.1.2 整數輸入

通過getInt方法實現,QInputDialog::getInt 是 Qt 中用於顯示一個簡單的對話框,其中包含一個用於輸入整數的欄位的靜態方法。這個方法通常用於獲取用戶輸入的整數。

方法的參數包括:

  • parent: 對話框的父視窗。傳入 nullptr 表示沒有父視窗。
  • caption: 對話框的標題。
  • label: 輸入欄位上方的文本標簽。
  • value: 初始值。
  • min: 最小值。
  • max: 最大值。
  • step: 步長,表示每次增減的量。
  • ok: 一個布爾指針,用於獲取對話框的 OK 按鈕的狀態。
  • flags: 可選的視窗標誌。

方法返回用戶輸入的整數,如果用戶取消了對話框,則返回 0。你可以根據需要調整標簽、初始值、範圍、步長等參數,以滿足你的具體需求。

該方法提供了一個SpinBox選擇框,在輸入時可以通過傳入minValue限制最小值,maxValue限制最大值,通過stepValue設置每次步長,代碼如下;

void MainWindow::on_pushButton_int_clicked()
{
    QString dlgTitle="輸入整數對話框";
    QString txtLabel="設置字體大小";
    int defaultValue=ui->plainTextEdit->font().pointSize();   // 現有字體大小
    int minValue=6, maxValue=50, stepValue=1;                 // 範圍(步長)
    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);

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

代碼運行後點擊整數輸入按鈕,則可彈出輸入框,整數選擇最小被限制在了6而最大限製為50,如下所示;

1.1.3 浮點數輸入

通過getDouble方法實現,QInputDialog::getDouble 是 Qt 中用於顯示一個簡單的對話框,其中包含一個用於輸入浮點數的欄位的靜態方法。這個方法通常用於獲取用戶輸入的浮點數。

方法的參數包括:

  • parent: 對話框的父視窗。傳入 nullptr 表示沒有父視窗。
  • caption: 對話框的標題。
  • label: 輸入欄位上方的文本標簽。
  • value: 初始值。
  • min: 最小值。
  • max: 最大值。
  • decimals: 小數位數。
  • ok: 一個布爾指針,用於獲取對話框的 OK 按鈕的狀態。
  • flags: 可選的視窗標誌。

方法返回用戶輸入的浮點數,如果用戶取消了對話框,則返回 0.0。你可以根據需要調整標簽、初始值、範圍、小數位數等參數,以滿足你的具體需求。

該方法提供了一個SpinBox選擇框,浮點數的輸入同樣可以限制輸入長度,同時浮點數也可以指定小數點的位數,通過decimals指定為兩位顯示,代碼如下;

void MainWindow::on_pushButton_float_clicked()
{
    QString dlgTitle="輸入浮點數對話框";
    QString txtLabel="輸入一個浮點數";
    float defaultValue=3.13;

    float minValue=0, maxValue=10000;  // 範圍
    int decimals=2;                    // 小數點位數

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

代碼運行後點擊浮點數輸入按鈕,則可彈出輸入框,浮點數選擇最小被限制在了0而最大限製為10000,預設值為3.13保留長度為兩位,如下所示;

1.1.4 單選框輸入

通過getItem方法實現,該方法適合於只讓用戶選擇特定的內容,QInputDialog::getItem 是 Qt 中用於顯示一個簡單的對話框,其中包含一個下拉框(QComboBox)供用戶選擇的靜態方法。這個方法通常用於獲取用戶從列表中選擇的項。

方法的參數包括:

  • parent: 對話框的父視窗。傳入 nullptr 表示沒有父視窗。
  • caption: 對話框的標題。
  • label: 下拉框上方的文本標簽。
  • items: 字元串列表,表示下拉框中的選項。
  • currentItem: 初始時被選中的項的索引。
  • editable: 是否允許用戶編輯下拉框中的文本。
  • ok: 一個布爾指針,用於獲取對話框的 OK 按鈕的狀態。在這個例子中,我們傳遞了 nullptr,因為我們不關心 OK 按鈕的狀態。
  • flags: 可選的視窗標誌。

方法返回用戶選擇的項,如果用戶取消了對話框,則返回一個空字元串。你可以根據需要調整標簽、初始選中項、是否可編輯等參數,以滿足你的具體需求。代碼如下所示;

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

    QString dlgTitle="條目選擇對話框";
    QString txtLabel="請選擇級別";
    int curIndex=0;                            // 初始選擇項
    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);
    }
}

代碼運行後點擊單選框輸入按鈕,則可彈出單選框窗體,讀者可選擇對應的選項,如下所示;

2.1 QFileDialog

QFileDialog 類用於打開和保存文件的標準對話框。它提供了用戶友好的界面,使得用戶可以輕鬆地選擇文件或目錄,在使用時同樣需要導入#include <QFileDialog>頭文件。

以下是 QFileDialog 類的一些常用方法的說明和概述,以表格形式列出:

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

這些方法提供了一系列功能,包括打開文件、保存文件、選擇目錄等,以及對對話框的一些屬性進行設置。這樣,開發者可以方便地使用這些方法構建出符合應用需求的文件對話框。需要註意的是,這些方法中的許多參數都有預設值,因此在大多數情況下,開發者可以選擇性地調用這些方法。

2.1.1 選擇文件

在選擇單個文件時可以通過調用getOpenFileName方法實現,QFileDialog::getOpenFileName 是 Qt 中用於顯示打開文件對話框並獲取用戶選擇的文件名的靜態方法。它通常用於在用戶需要選擇一個文件進行打開操作時,例如載入文件等場景。

方法的參數包括:

  • parent: 對話框的父視窗。傳入 nullptr 表示沒有父視窗。
  • caption: 對話框的標題。
  • dir: 預設的目錄路徑。
  • filter: 文件類型過濾器,用於篩選可打開的文件類型。可以使用分號分隔多個過濾器,例如 "Text Files (*.txt);;All Files (*)"

方法返回用戶選擇的文件名,如果用戶取消了對話框,則返回一個空字元串。你可以根據需要調整過濾器、預設目錄等參數,以滿足你的具體需求。

通過最後一個參數來指定需要打開的文件類型,通常可傳入一組字元串來實現過濾,當打開後可以通過aFileName拿到文件具體路徑,代碼如下;

void MainWindow::on_pushButton_file_clicked()
{
    QString curPath=QDir::currentPath();                                       // 獲取系統當前目錄
    //  QString  curPath=QCoreApplication::applicationDirPath();               // 獲取應用程式的路徑
    QString dlgTitle="選擇一個文件";                                             // 對話框標題
    QString filter="文本文件(*.txt);;圖片文件(*.jpg *.gif *.png);;所有文件(*.*)";  // 文件過濾器

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

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

打開效果圖如下所示;

同理,當我們需要選擇多個文件並打開時只需要將QString修改為QStringList這樣當文件被打開後則可以通過迴圈輸出fileList列表來獲取所有路徑信息,如下代碼所示;

void MainWindow::on_pushButton_multiple_clicked()
{
    // QString curPath=QCoreApplication::applicationDirPath();                // 獲取應用程式的路徑
    QString curPath=QDir::currentPath();                                      // 獲取系統當前目錄
    QString dlgTitle="選擇多個文件";                                            // 對話框標題
    QString filter="文本文件(*.txt);;圖片文件(*.jpg *.gif *.png);;所有文件(*.*)"; // 文件過濾器

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

在選擇時可以通過拖拽選中的方式選擇多個文件,如下圖所示;

2.1.2 選擇目錄

選擇目錄時可以調用getExistingDirectory方法,QFileDialog::getExistingDirectory 是 Qt 中用於顯示選擇目錄對話框並獲取用戶選擇的目錄的靜態方法。它通常用於在用戶需要選擇一個目錄時,例如保存文件到特定目錄或載入文件等場景。

方法的參數包括:

  • parent: 對話框的父視窗。傳入 nullptr 表示沒有父視窗。
  • caption: 對話框的標題。
  • dir: 預設的目錄路徑。
  • options: 對話框的選項。在示例中,使用了 QFileDialog::ShowDirsOnly 表示只顯示目錄,並且 QFileDialog::DontResolveSymlinks 表示不解析符號鏈接。

方法返回用戶選擇的目錄路徑,如果用戶取消了對話框,則返回一個空字元串。你可以根據需要調整預設目錄、選項等參數,以滿足你的具體需求。

void MainWindow::on_pushButton_dirfile_clicked()
{
    QString curPath=QCoreApplication::applicationDirPath();    // 獲取應用程式的路徑
    // QString curPath=QDir::currentPath();                    // 獲取系統當前目錄

    // 調用打開文件對話框打開一個文件
    QString dlgTitle="選擇一個目錄";                             // 對話框標題
    QString selectedDir=QFileDialog::getExistingDirectory(this,dlgTitle,curPath,QFileDialog::ShowDirsOnly);
    if (!selectedDir.isEmpty())
    {
        ui->plainTextEdit->appendPlainText(selectedDir);
    }
}

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

2.1.3 保存文件

保存文件可以通過調用getSaveFileName方法來實現,QFileDialog::getSaveFileName 是 Qt 中用於顯示保存文件對話框並獲取用戶選擇的文件名的靜態方法。它通常用於在用戶將文件保存到磁碟時獲取文件的保存路徑。

該方法的參數包括:

  • parent: 對話框的父視窗。傳入 nullptr 表示沒有父視窗。
  • caption: 對話框的標題。
  • dir: 預設的目錄路徑。
  • filter: 文件類型過濾器,用於篩選可保存的文件類型。可以使用分號分隔多個過濾器,例如 "Text Files (*.txt);;All Files (*)"

方法返回用戶選擇的文件名,如果用戶取消了對話框,則返回一個空字元串。你可以根據需要調整過濾器、預設目錄等參數,以滿足你的具體需求。

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

保存文件對話框如下圖所示,當點擊後則可以將文件保存到特定目錄下;

文章出處:https://www.cnblogs.com/LyShark/p/17903240.html
本博客所有文章除特別聲明外,均採用 BY-NC-SA 許可協議。轉載請註明出處!
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 流暢的orm讓我發現我抵觸的是mybatis而不是java 背景介紹 開發.net 也快10年了,到第三年的時候我已經漸漸瓶頸了,於是我在網上找各種資料但是大部分c#資料全是皮毛資料,稍微深一點點就再講表達式expression,感覺完全沒有那個深度,但是同時期的java講解的都是基本原理,和框架思 ...
  • 2.1、創建Maven工程 2.1.1、創建空項目 2.1.2、設置項目名稱和路徑 2.1.3、設置項目sdk 2.1.4、項目初始狀態 註意:需要關閉項目再重新打開,才能看到SpringBoot-Part文件夾 2.1.5、配置maven 2.1.6、創建module 右擊SpringBoot-P ...
  • 相信大家這幾天被董宇輝事件刷屏了,透徹的說就是幾個關鍵詞: 功高蓋主 去董宇輝 卸磨殺驢 飛鳥盡良弓藏 大家都知道新東方的轉型成功(打著助農的旗號),董宇輝發揮了巨大作用,很多人也是通過董宇輝才認識了東方甄選,讓東方甄選一躍成為抖音前三名的帶貨直播間。就在直播間蒸蒸日上的時候,金主擔心“東方甄選== ...
  • SpringCloud 文章推薦:Eureka:Spring Cloud服務註冊與發現組件(非常詳細) (biancheng.net) 概述 Spring Cloud 是一個服務治理平臺,是若幹個框架的集合,提供了全套的分散式系統解決方案。包含了:服務註冊與發現、配置中心、服務網關、智能路由、負載均 ...
  • 在使用pip安裝Python軟體包時,有時會遇到與 SSL/TLS 相關的問題。一種常見情況是在使用VPN時出現以下錯誤信息 ValueError: check_hostname requires server_hostname: ValueError: check_hostname require ...
  • Qt 是一個跨平臺C++圖形界面開發庫,利用Qt可以快速開發跨平臺窗體應用程式,在Qt中我們可以通過拖拽的方式將不同組件放到指定的位置,實現圖形化開發極大的方便了開發效率,本章將重點介紹自定義`Dialog`組件的常用方法及靈活運用。自定義對話框需要解決的問題是,如何讓父窗體與子窗體進行數據交換,要... ...
  • 在C++中使用SQLite資料庫需要使用SQLite的C/C++介面。以下是一個簡單的示例,演示如何在C++中使用SQLite,並提供了常見的查詢、增加、修改和刪除功能。為了使用SQLite,你需要下載SQLite的C/C++介面,並鏈接到你的項目中。 首先,確保你已經下載了SQLite的C/C++ ...
  • 在買賣二手車的過程中,準確的估值是非常重要的。而快速獲取準確的二手車估值需要大量的數據和計算,這對於個人來說可能是非常困難的。然而,現在有一種API介面可以幫助我們快速獲取準確的二手車估值,讓我們省時省力。 這個API介面是由挖數據平臺提供的。挖數據平臺是一個專註於數據挖掘和分析的平臺,在汽車行業有 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...