Windows图形界面(GUI)-QT-C/C++ - QT 对话窗口

ops/2025/1/23 1:43:07/
  • 公开视频 -> 链接点击跳转公开课程
  • 博客首页 -> ​​​链接点击跳转博客主页

目录

模态对话框

非模态对话框

文件对话框

基本概念

静态函数

常见属性

颜色对话框

基本概念

静态函数

常见属性

字体对话框

基本概念

静态函数

常见属性

输入对话框

基本概念

静态函数

消息对话框

基本概念

静态函数


  • 模态对话框

    • 模态对话框是指在打开后,用户必须与该对话框交互并关闭它,才能返回到主窗口或其他窗口进行操作。在模态对话框打开期间,主窗口和其他窗口都不可用。

    • 模态对话框通常用于需要用户立即处理的情况,如确认对话框、错误提示、设置窗口等。

    • 在 Qt 中,可以通过 QDialog 类实现模态对话框。你可以使用 exec() 方法来显示模态对话框。

void MainWindow::on_pushButton_clicked()
{QDialog dlg(this);QPushButton* btn = new QPushButton("on_pushButton_clicked", &dlg);dlg.exec();
}void MainWindow::on_pushButton_3_clicked()
{Dialog1 dlg(this);dlg.exec();
}

  • 非模态对话框

    • 非模态对话框是指在打开后,用户可以自由地与主窗口或其他窗口交互,而不必首先关闭该对话框。

    • 非模态对话框适用于不需要立即处理的情况,如工具窗口、搜索窗口等。

    • 在 Qt 中,可以通过 QDialog 类实现非模态对话框。你可以使用 show() 方法来显示非模态对话框。

void MainWindow::on_pushButton_2_clicked()
{QDialog* dlg = new QDialog(this);dlg->setAttribute(Qt::WA_DeleteOnClose);dlg->show();
}void MainWindow::on_pushButton_4_clicked()
{Dialog2* dlg = new Dialog2(this);dlg->show();
}

  • 文件对话框

  • 基本概念

    • QFileDialog:一个用于选择文件或目录的对话框。

    • 静态函数:QFileDialog 提供了一些静态函数,可以快速创建和显示文件对话框。

    • 模式:文件对话框可以是模态的(阻塞父窗口)或非模态的(不阻塞父窗口)。

  • 静态函数

    • getOpenFileName:选择一个文件进行打开。

    • getSaveFileName:选择一个文件进行保存。

    • getExistingDirectory:选择一个目录。

    • getOpenFileNames:选择多个文件进行打开。

  • 常见属性

    • setWindowTitle:设置对话框的标题。

    • setDirectory:设置对话框的初始目录。

    • setNameFilter:设置文件过滤器。

    • setFileMode:设置文件模式(例如,选择单个文件、多个文件、目录等)。

    • setOption:设置对话框的选项(例如,显示隐藏文件、不解析符号链接等)。

  • getOpenFileName用于选择一个文件进行打开。

    • 函数原型

      QString QFileDialog::getOpenFileName(QWidget *parent = nullptr,const QString &caption = QString(),const QString &dir = QString(),const QString &filter = QString(),QString *selectedFilter = nullptr,Options options = Options()
      )
    • 参数说明

      • parent:父窗口,用于模态对话框的父窗口。

      • caption:对话框的标题。

      • dir:初始目录。

      • filter:文件过滤器,例如 "Images (*.png *.xpm *.jpg);;Text files (*.txt)"

      • selectedFilter:选中的过滤器。

      • options:对话框选项,例如 QFileDialog::ReadOnly

    • 示例代码

      • void MainWindow::on_pushButton_5_clicked()
        {QString fileName = QFileDialog::getOpenFileName(this,"Open File","D:\\Debug","Image(*.bmp *.png);;text(*.txt);;allfiles(*.*)",NULL,QFileDialog::ReadOnly);qDebug() << fileName;
        }
  • getSaveFileName用于选择一个文件进行保存。

    • 函数原型

      QString QFileDialog::getSaveFileName(QWidget *parent = nullptr,const QString &caption = QString(),const QString &dir = QString(),const QString &filter = QString(),QString *selectedFilter = nullptr,Options options = Options()
      )
    • 参数说明

      • parent:父窗口,用于模态对话框的父窗口。

      • caption:对话框的标题。

      • dir:初始目录。

      • filter:文件过滤器,例如 "Images (*.png *.xpm *.jpg);;Text files (*.txt)"

      • selectedFilter:选中的过滤器。

      • options:对话框选项,例如 QFileDialog::ReadOnly

    • 示例代码


void MainWindow::on_pushButton_7_clicked()
{QString fileName = QFileDialog::getSaveFileName(this,"Save File","D:\\Debug","Image(*.bmp *.png);;text(*.txt);;allfiles(*.*)",NULL,QFileDialog::ReadOnly);qDebug() << fileName;
}
  • getExistingDirectory用于选择一个目录。

    • 函数原型

      QString QFileDialog::getExistingDirectory(QWidget *parent = nullptr,const QString &caption = QString(),const QString &dir = QString(),Options options = ShowDirsOnly
      )
    • 参数说明

      • parent:父窗口,用于模态对话框的父窗口。

      • caption:对话框的标题。

      • dir:初始目录。

      • options:对话框选项,例如 QFileDialog::ShowDirsOnly

    • 示例代码

void MainWindow::on_pushButton_8_clicked()
{QString dir = QFileDialog::getExistingDirectory(this,"Open Directory","D:\\Debug",QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks);qDebug() << dir;
}
  • getOpenFileNames用于选择多个文件进行打开。

    • 函数原型

      QStringList QFileDialog::getOpenFileNames(QWidget *parent = nullptr,const QString &caption = QString(),const QString &dir = QString(),const QString &filter = QString(),QString *selectedFilter = nullptr,Options options = Options()
      )
    • 参数说明

      • parent:父窗口,用于模态对话框的父窗口。

      • caption:对话框的标题。

      • dir:初始目录。

      • filter:文件过滤器,例如 "Images (*.png *.xpm *.jpg);;Text files (*.txt)"

      • selectedFilter:选中的过滤器。

      • options:对话框选项,例如 QFileDialog::ReadOnly

    • 示例代码

void MainWindow::on_pushButton_6_clicked()
{QStringList fileName = QFileDialog::getOpenFileNames(this,"Open Files","D:\\Debug","Image(*.bmp *.png);;text(*.txt);;allfiles(*.*)",NULL,QFileDialog::ReadOnly);qDebug() << fileName;
}

 

  • 颜色对话框

  • 基本概念

    • QColorDialog:一个用于选择颜色的对话框。

    • 静态函数:QColorDialog 提供了一些静态函数,可以快速创建和显示颜色对话框。

    • 模式:颜色对话框可以是模态的(阻塞父窗口)或非模态的(不阻塞父窗口)。

  • 静态函数

    • getColor:选择一个颜色。
  • 常见属性

    • setWindowTitle:设置对话框的标题。

    • setCurrentColor:设置初始颜色。

    • currentColor:获取当前选中的颜色。

  • getColor 函数获取颜色

    • 函数原型

      QColor QColorDialog::getColor(const QColor &initial = Qt::white,QWidget *parent = nullptr,const QString &title = QString(),ColorDialogOptions options = ColorDialogOptions()
      )
    • 参数说明

      • initial:初始颜色。默认为 Qt::white

      • parent:父窗口,用于模态对话框的父窗口。

      • title:对话框的标题。默认为空字符串。

      • options:对话框选项。可以是 QColorDialog::ShowAlphaChannel 或其他选项的组合。

    • 示例代码


void MainWindow::on_pushButton_9_clicked()
{QColor color = QColorDialog::getColor(Qt::white, this, "Select Color");if(color.isValid()){ui->pushButton_9->setStyleSheet("color:" + color.name() + ";");qDebug() << color.name();}}

 

  • 字体对话框

  • 基本概念

    • QFontDialog:一个用于选择字体的对话框。

    • 静态函数:QFontDialog 提供了一些静态函数,可以快速创建和显示字体对话框。

    • 模式:字体对话框可以是模态的(阻塞父窗口)或非模态的(不阻塞父窗口)。

  • 静态函数

    • getFont:选择一个字体。
  • 常见属性

    • setWindowTitle:设置对话框的标题。

    • setCurrentFont:设置初始字体。

    • currentFont:获取当前选中的字体。

  • getFont:选择一个字体。

    • 函数原型

      QFont QFontDialog::getFont(bool *ok,const QFont &initial = QFont(),QWidget *parent = nullptr,const QString &title = QString(),FontDialogOptions options = FontDialogOptions()
      )
    • 参数说明

      • ok:一个布尔指针,用于指示用户是否确认了选择。如果用户确认了选择,*ok 将被设置为 true,否则为 false

      • initial:初始字体。默认为空字体(QFont())。

      • parent:父窗口,用于模态对话框的父窗口。

      • title:对话框的标题。默认为空字符串。

      • options:对话框选项。可以是 QFontDialog::NoButtons 或其他选项的组合。

    • 示例代码


void MainWindow::on_pushButton_10_clicked()
{bool ok;QFont font = QFontDialog::getFont(&ok,QFont("Helvetica [Cronyx]", 10),this,"Select Font");if(ok){ui->pushButton_10->setFont(font);qDebug() << font.family();}}

  • 输入对话框

  • 基本概念

    • QInputDialog:一个用于获取用户输入的对话框。

    • 输入类型:可以输入的类型包括字符串(text)、整数(int)、浮点数(double)等。

  • 静态函数

    • getText:获取字符串输入。

    • 函数原型

      QString 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()
      )
    • 参数说明

      • parent:父窗口指针,用于模态对话框的父窗口。

      • title:对话框的标题。

      • label:对话框中显示的标签文本。

      • mode:输入框的回显模式,例如普通模式(QLineEdit::Normal)或密码模式(QLineEdit::Password)。

      • text:输入框的初始文本。

      • ok:布尔指针,用于指示用户是否确认了输入。如果用户确认了输入,*ok 将被设置为 true,否则为 false

      • flags:窗口标志,用于设置对话框的外观和行为。

  • getInt:获取整数输入。

int QInputDialog::getInt(QWidget *parent, const QString &title, const QString &label, int value = 0, int min = -2147483647, int max = 2147483647, int step = 1, bool *ok = nullptr, Qt::WindowFlags flags = Qt::WindowFlags()
)
  • 参数说明

    • parent:父窗口指针,用于模态对话框的父窗口。

    • title:对话框的标题。

    • label:对话框中显示的标签文本。

    • value:输入框的初始值。

    • min:输入的最小值。

    • max:输入的最大值。

    • step:输入框的步长。

    • ok:布尔指针,用于指示用户是否确认了输入。如果用户确认了输入,*ok 将被设置为 true,否则为 false

    • flags:窗口标志,用于设置对话框的外观和行为。

  • getDouble:获取浮点数输入。

    • 函数原型

      • double QInputDialog::getDouble(QWidget *parent, const QString &title, const QString &label, double value = 0, double min = -2147483647, double max = 2147483647, int decimals = 1, bool *ok = nullptr, Qt::WindowFlags flags = Qt::WindowFlags()
        )
    • 参数说明

      • parent:父窗口指针,用于模态对话框的父窗口。

      • title:对话框的标题。

      • label:对话框中显示的标签文本。

      • value:输入框的初始值。

      • min:输入的最小值。

      • max:输入的最大值。

      • decimals:输入框的小数位数。

      • ok:布尔指针,用于指示用户是否确认了输入。如果用户确认了输入,*ok 将被设置为 true,否则为 false

      • flags:窗口标志,用于设置对话框的外观和行为。

    • getItem:从一个项目列表中获取选择。

      • 函数原型

        QString QInputDialog::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()
        )
        
      • 参数说明

        • parent:父窗口指针,用于模态对话框的父窗口。

        • title:对话框的标题。

        • label:对话框中显示的标签文本。

        • items:项目列表,用户可以从中选择。

        • current:初始选中的项目索引。

        • editable:是否允许用户输入自定义文本。

        • ok:布尔指针,用于指示用户是否确认了输入。如果用户确认了输入,*ok 将被设置为 true,否则为 false

        • flags:窗口标志,用于设置对话框的外观和行为。

      • 示例代码
      • void MainWindow::on_pushButton_11_clicked()
        {bool ok;QString text = QInputDialog::getText(this,"input dialog","please input your name:",QLineEdit::Normal,"0xCC",&ok );if(ok && !text.isEmpty()){qDebug() << text;}}void MainWindow::on_pushButton_12_clicked()
        {bool ok;int value = QInputDialog::getInt(this,"input dialog","please input your age:",18,0,120,1,&ok);if(ok) qDebug() << value;
        }void MainWindow::on_pushButton_13_clicked()
        {bool ok;QStringList items;items << "apple" << "banana";QString item = QInputDialog::getItem(this,"input dialog","please select a fruit",items,1,false,&ok);if(ok) qDebug() << item;
        }
        

  • 消息对话框

  • 基本概念

    • QMessageBox:一个用于显示消息的对话框。

    • 消息类型:包括信息(Information)、警告(Warning)、错误(Critical)、询问(Question)等。

  • 静态函数

    • information:显示信息消息。

    • 函数原型

      int QMessageBox::information(QWidget *parent, const QString &title, const QString &text, int button0, int button1 = 0, int button2 = 0
      )
    • warning:显示警告消息。

    • 函数原型

      int QMessageBox::warning(
      QWidget *parent, 
      const QString &title, 
      const QString &text, 
      int button0, 
      int button1 = 0, 
      int button2 = 0
      )
      
  • critical:显示错误消息。

  • 函数原型

    int QMessageBox::critical(
    QWidget *parent, 
    const QString &title, 
    const QString &text, 
    int button0, 
    int button1 = 0, 
    int button2 = 0
    )
    
  • question:显示询问消息。

  • 函数原型

    int QMessageBox::question(
    QWidget *parent, 
    const QString &title, 
    const QString &text, 
    int button0, 
    int button1 = 0, 
    int button2 = 0
    )
    
  • 参数说明

    • parent:父窗口指针,用于模态对话框的父窗口,可以是 nullptr 表示没有父窗口。

    • title:对话框的标题。

    • text:对话框中显示的主要消息文本。

    • button0:对话框中的第一个按钮,使用 QMessageBox::StandardButton 枚举值。

    • button1:对话框中的第二个按钮(可选),使用 QMessageBox::StandardButton 枚举值。

    • button2:对话框中的第三个按钮(可选),使用 QMessageBox::StandardButton 枚举值。

  • 示例代码

    • void MainWindow::on_pushButton_14_clicked()
      {QMessageBox::information(this, "information", "This is a information message", QMessageBox::Ok);
      }void MainWindow::on_pushButton_15_clicked()
      {QMessageBox::warning(this, "warning", "This is a warning message");
      }void MainWindow::on_pushButton_16_clicked()
      {QMessageBox::critical(this, "critical", "This is a critical message");
      }void MainWindow::on_pushButton_17_clicked()
      {int ret = QMessageBox::question(this, "question", "Are you want to continue?");if(ret == QMessageBox::Yes){QMessageBox::information(this, "information", "your chose yes");}else{QMessageBox::information(this, "information", "your chose no");}
      }

 


http://www.ppmy.cn/ops/152332.html

相关文章

Python 电脑定时关机工具

Python 电脑定时关机工具 相关资源文件已经打包成EXE文件&#xff0c;可双击直接运行程序&#xff0c;且文章末尾已附上相关源码&#xff0c;以供大家学习交流&#xff0c;博主主页还有更多Python相关程序案例&#xff0c;秉着开源精神的想法&#xff0c;望大家喜欢&#xff0c…

2025年大模型气象预测架构与商业化影响

随着人工智能技术,尤其是大模型(如深度学习、大规模神经网络)的飞速发展,气象预测的传统方法正在经历深刻变革。2025年,气象预测将借助大模型技术进入一个新的阶段。本文将从架构角度详细探讨2025年大模型在气象预测中的应用,并分析其对商业化的潜在影响。 一、2025年大模…

AIP-111 平面

编号111原文链接AIP-111: Planes状态批准创建日期2023-06-17更新日期2023-06-17 API上的资源和方法可以根据所属或执行操作的 平面 分类。API上下文中定义了以下平面&#xff1a; 管理平面 &#xff1a;统一的、面向资源的API&#xff0c;主要用于配置和资源检索。数据平面 &…

Android系统开发(一):AOSP 架构全解析:开源拥抱安卓未来

引言 当我们手握智能手机&#xff0c;流畅地滑动屏幕、切换应用、欣赏动画时&#xff0c;背后其实藏着一套庞大且精密的开源系统——Android AOSP&#xff08;Android Open Source Project&#xff09;。这套系统不仅是所有安卓设备的根基&#xff0c;也是系统开发者的终极 pl…

linux-NFS网络共享存储服务配置

1.NFS服务原理 NFS会经常用到&#xff0c;用于在网络上共享存储&#xff0c;这样讲&#xff0c;你对NFS可能不太了解&#xff0c;举一个例子&#xff0c; 加入有三台机器A,B,C&#xff0c;它们需要访问同一个目录&#xff0c;目录中都是图片&#xff0c;传统的做法是把这些 图…

Hive PERCENTILE_APPROX 函数详解

Hive PERCENTILE_APPROX 函数详解 PERCENTILE_APPROX 是 Hive 中一个重要的函数&#xff0c;用于近似计算数据的百分位数。本文介绍 PERCENTILE_APPROX 的原理、参数以及核心概念 B 值等信息。 函数语法 PERCENTILE_APPROX(expression, percentage [, B])expression: 输入的数…

20250118面试鸭特训营第26天

更多特训营笔记详见个人主页【面试鸭特训营】专栏 1.说下你常用的 Linux 命令&#xff1f; 文件与目录操作 命令描述ls列出当前目录和文件和子目录ls -l列出当前目录和文件和子目录&#xff0c;包括详细信息ls -a列出当前目录和文件和子目录&#xff0c;包括隐藏文件cd切换目…

实现宿主机(Windows 10 Docker Desktop)和Linux容器之间的数据挂载的三种方法

在Windows 10上使用Docker Desktop运行Linux容器时&#xff0c;经常需要将宿主机上的文件或目录与容器内的文件或目录进行关联&#xff0c;以便实现数据的共享和持久化。Docker提供了多种方法来实现这一目标&#xff0c;包括使用-v选项挂载宿主机目录、创建Docker数据卷以及使用…