当前位置: 首页 > news >正文

Qt开发:QInputDialog的使用

文章目录

    • 一、QInputDialog的介绍
    • 二、 QInputDialog的基本用法
    • 三、使用 QInputDialog的实例
    • 四、QInputDialog的信号与槽

一、QInputDialog的介绍

QInputDialog 是 Qt 提供的一个对话框类,用于获取用户输入的文本、整数或浮点数。它提供了简单易用的静态方法和可定制的实例对象,适用于用户输入场景,如获取用户名、年龄、选项等。
QInputDialog 继承自 QDialog,主要用于输入以下三种类型的数据:

  • 文本(QString)
  • 整数(int)
  • 浮点数(double)

可以以模态或非模态方式运行,并支持自定义提示信息、默认值、输入范围等。

二、 QInputDialog的基本用法

1.获取文本输入

QString text = QInputDialog::getText(this, "输入对话框", "请输入你的姓名:", QLineEdit::Normal, "默认值");
if (!text.isEmpty()) {
    qDebug() << "输入的文本:" << text;
}

在这里插入图片描述

  • “输入对话框”:对话框标题。
  • “请输入你的姓名:”:提示信息。
  • QLineEdit::Normal:输入框类型,可选:QLineEdit::Normal(普通文本)、QLineEdit::Password(密码输入)、QLineEdit::NoEcho(不显示输入)。
  • “默认值”:初始文本。

2.获取整数输入

int age = QInputDialog::getInt(this, "输入对话框", "请输入年龄:", 18, 0, 100, 1);
qDebug() << "输入的年龄:" << age;

3.获取浮点数输入

double salary = QInputDialog::getDouble(this, "输入对话框", "请输入工资:", 5000.0, 0.0, 100000.0, 2);
qDebug() << "输入的工资:" << salary;

4.获取列表选择

QStringList items = {"苹果", "香蕉", "橙子"};
QString fruit = QInputDialog::getItem(this, "选择对话框", "请选择一个水果:", items, 0, false);
qDebug() << "选择的水果:" << fruit;

在这里插入图片描述

三、使用 QInputDialog的实例

静态方法适用于简单场景,如果需要更多控制,可以创建 QInputDialog 实例:

QInputDialog dialog(this);
dialog.setLabelText("请输入用户名:");
dialog.setInputMode(QInputDialog::TextInput);
dialog.setTextValue("默认用户");
if (dialog.exec() == QDialog::Accepted) {
    QString username = dialog.textValue();
    qDebug() << "输入的用户名:" << username;
}
  • setInputMode(QInputDialog::TextInput):设置输入模式:TextInput(文本)、IntInput(整数)、DoubleInput(浮点数)。
  • exec():以模态方式显示对话框。

四、QInputDialog的信号与槽

对于非模态使用,可以连接信号槽:

QInputDialog *dialog = new QInputDialog(this);
dialog->setLabelText("请输入年龄:");
dialog->setInputMode(QInputDialog::IntInput);
dialog->setIntRange(0, 120);
dialog->open();
connect(dialog, &QInputDialog::intValueSelected, this, [](int value) {
    qDebug() << "输入的年龄:" << value;
});
  • intValueSelected(int):整数输入完成时触发。
  • textValueSelected(QString):文本输入完成时触发。

可以隐藏“取消”按钮,使输入框更简洁:

dialog->setOption(QInputDialog::NoButtons);
http://www.dtcms.com/a/90033.html

相关文章:

  • AI 的“幻觉”现象:深入解析 Hallucination 的成因与应对之道
  • MySQL 对text类型字段添加索引
  • 【RISC-V CPU debug 专栏 4.1 -- RISCV CSR C 内嵌汇编访问介绍】
  • Java虚拟机面试题:内存管理(下)
  • 深度学习入门之基于MLP的加州房价预测模型
  • DeepSeek 发布DeepSeek-V3-0324 版本 前端与网页开发能力、推理与多任务能力提升
  • 2.5 Gannt图【甘特图】
  • 树莓派温湿度监测终极指南:DHT11+wiringPi驱动深度解析
  • djinn: 1靶场渗透测试
  • gdb: Invalid disassembly modifier
  • 宝塔面板安装docker flarum失败,请先安装依赖应用: [‘mysql‘]:5/8
  • 平台体系如何搭建?贝锐向日葵发布企业技术支持解决方案白皮书
  • JavaEE企业级开发 延迟双删+版本号机制(乐观锁) 事务保证redis和mysql的数据一致性 示例
  • 使用AI一步一步实现若依(23)
  • 什么是「Agentic 工作流程」?丨社区来稿
  • Springboot 学习 之 Shardingsphere 按照日期水平分表(二)
  • c++ map和vector模板类
  • mysql创建库表插入数据演示
  • 《时间编码》
  • 【零基础学python】python高级语法(三)
  • MySQL学习之用户管理
  • 十五天-动态规划
  • 6.1 模拟专题:LeetCode 1576. 替换所有的问号
  • Android studio组合教程--做出一个类似于QQ的登录页面
  • vue2前端日志数据存储,推荐(IndexedDB)
  • 数据类设计_图片类设计_矩阵图类型和像素图类型设计的补充
  • 【CC2530 教程 十】CC2530 Z-Stack 协议栈
  • 基于微信小程序的医院挂号预约系统设计与实现【lw+源码+部署+讲解】
  • 小程序跳转到h5页面
  • 双指针技巧在C++中的应用:从基础到进阶