C++实践之Qt学习(七):标准对话框

Qt为应用程序设计提供了一些常用的标准对话框,如打开文件对话框、选择颜色对话框、信息提示和确认选择对话框、标准输入对话框等,对于这些常用的对话框我们不需要自己设计,直接使用就可以。

消息对话框

消息对话框QMessageBox 用于显示提示、警告、错误等信息,或进行确认选择,由几个静态函数实现这些功能。其中 information()、warning()、critical() 和 about() 这几个函数的输入参数和使用方法相同,只是信息提示的图标有区别,一般只有一个 OK 按钮,且无须关心对话框的返回值, 而question() 函数用于打开一个选择对话框,提示信息,并提供 Yes、No、OK、Cancel 等按钮,用户单击某个按钮返回选择。

简单消息提示

    // information
    QMessageBox::information(this, "注册提示", "注册成功!请保管好您的用户名和密码");

    // warning
    QMessageBox::warning(this, "系统提示", "您的权限不足,请联系管理员");

    // critical
    QMessageBox::critical(this, "登录", "您输入的用户名或密码错误,登录失败!");

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

确认消息提示

   // question
    if (QMessageBox::Yes == QMessageBox::question(this, "员工管理", "确认要删除该员工信息吗?"))
    {
        // 选择了“是”,进行删除操作
        // . . .
    }

在这里插入图片描述

打开文件对话框

    QString curPath=QDir::currentPath();//获取系统当前目录
    //获取应用程序的路径
    QString dlgTitle="选择头像图片"; //对话框标题
    QString filter="图片文件(*.jpg *.gif *.png);;所有文件(*.*)"; //文件过滤器
    QString headImgPath=QFileDialog::getOpenFileName(this, dlgTitle, curPath, filter);
    if (!headImgPath.isEmpty())
    {
        // 设置图片作为头像
    }

颜色选择对话框

    // 获取颜色
    QPalette pal=ui->pushButton->palette(); //获取按钮的palette
    QColor  iniColor=pal.color(QPalette::ButtonText); //按钮的文字颜色(编辑框文本颜色是Text)
    QColor color=QColorDialog::getColor(iniColor,this, "选择颜色"); // 打开选择颜色对话框
    if (color.isValid()) //选择有效
    {
        pal.setColor(QPalette::ButtonText, color); //palette设置选择的颜色
        ui->pushButton->setPalette(pal); //设置 palette
    }

字体选择对话框

    //选择字体
    QFont iniFont = ui->pushButton->font(); //获取按钮的字体
    bool ok = false;
    QFont font = QFontDialog::getFont(&ok, iniFont); //选择字体
    if (ok) //选择有效
    {
        ui->pushButton->setFont(font);
    }

标准输入对话框

一般标准输入对话框可以用来输入字符串数值,还可以做简单的下拉框选择。

输入字符串

QInputDialog::getText()函数将会打开一个对话框用于输入字符串,传递的参数包括对话框标题、提示标签文字、缺省输入、编辑框响应模式等。

    //输入字符串
    QString dlgTitle = "输入文字对话框"; // 对话框标题
    QString txtLabel = "请输入你的姓名"; // 文本提示
    QString defaultInput = "例如:张三"; // 编辑框默认文本内容
    QLineEdit::EchoMode echoMode = QLineEdit::Normal;//回显模式,正常文字输入
    //QLineEdit::EchoMode echoMode=QLineEdit::Password;//回显模式,密码输入
    bool ok = false; // 确认标志
    QString text = QInputDialog::getText(this, dlgTitle, txtLabel, echoMode, defaultInput, &ok);
    if (ok && !text.isEmpty())
    {
        // 确认后执行其他操作。。。
        qDebug() << "输入了" << text;
    }

在这里插入图片描述

输入整数

输入整数对话框使用一个 SpinBox 组件输入整数,getInt() 需要传递的参数包括数值大小范围、步长、初始值,确认选择输入后,将输入的整数值作为文本框字体的大小。

    // 输入整数
    QString dlgTitle = "输入整数对话框";
    QString txtLabel = "设置字体大小";
    int defaultValue = ui->pushButton->font().pointSize(); //现有字体大小
    int minValue = 6, maxValue = 50, stepValue = 1; //范围,步长
    bool ok = false;
    int inputValue = QInputDialog::getInt(this, dlgTitle, txtLabel,
                                          defaultValue, minValue, maxValue, stepValue, &ok);
    if (ok) //是否确认输入
    {
        QFont font=ui->pushButton->font();
        font.setPointSize(inputValue);
        ui->pushButton->setFont(font);
    }

在这里插入图片描述

输入浮点数

使用 QInputDialog::getDouble()函数输入一个浮点数,输入对话框使用一个 QDoubleSpinBox 作为输入组件,getDouble() 的输入参数需要输入范围、初始值、小数点位数等。

    // 输入浮点数
    QString dlgTitle = "输入浮点数对话框";
    QString txtLabel = "输入您的身高";
    float defaultValue = 175.5;
    float minValue = 0, maxValue = 10000;  //范围
    int decimals = 1; //小数点位数
    bool ok = false;
    float inputValue = QInputDialog::getDouble(this, dlgTitle, txtLabel,
                            defaultValue, minValue, maxValue, decimals, &ok);
    if (ok) // 确认选择
    {
        // 执行其他操作

    }

在这里插入图片描述

下拉列表选择

使用 QInputDialog::getItem() 可以从一个 ComboBox 组件的下拉列表中选择输入。

    // 下拉列表选择
    QStringList items; //ComboBox列表的内容
    items << "简单" << "普通" << "困难" << "地狱难度";
    QString dlgTitle = "条目选择对话框";
    QString txtLabel = "请选择游戏难度";
    int curIndex = 0; //初始选择项
    bool editable = false; //ComboBox是否可编辑
    bool ok = false;
    QString text = QInputDialog::getItem(this, dlgTitle, txtLabel, items, curIndex, editable, &ok);
    if (ok && !text.isEmpty())
    {
        // 执行其他操作
    }

在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值