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

qt QInputDialog详解

1、概述

QInputDialog 是 Qt 框架中的一个对话框类,用于获取用户输入。它提供了简单的文本输入、整数输入、浮点数输入以及列表选择等功能。QInputDialog 继承自 QDialog,是一个模态对话框,通常用于请求用户输入单个值或进行简单的选择。

2、重要方法
  • QInputDialog(QWidget *parent = nullptr): 构造函数,创建一个新的 QInputDialog 对象。parent 是可选的父窗口参数。
  • static QString getText(QWidget *parent = nullptr, const QString &title = QString(), const QString &label = QString(), QLineEdit::EchoMode mode = QLineEdit::Normal, const QString &text = QString(), bool *ok = nullptr, Qt::WindowFlags flags = Qt::WindowFlags()): 静态函数,显示一个文本输入对话框并返回用户输入的文本。title 是对话框的标题,label 是输入字段旁边的标签,mode 是输入字段的回显模式(如密码模式),text 是默认输入的文本,ok 是一个指向布尔值的指针,用于指示用户是否点击了“确定”,flags 是对话框的窗口标志。
  • static int getInt(QWidget *parent = nullptr, const QString &title = QString(), const QString &label = QString(), int value = 0, int minValue = -2147483647, int maxValue = 2147483647, bool *ok = nullptr, Qt::WindowFlags flags = Qt::WindowFlags()): 静态函数,显示一个整数输入对话框并返回用户输入的整数。参数与 getText 类似,但增加了 value(默认值)、minValue(最小值)和 maxValue(最大值)。
  • static double getDouble(QWidget *parent = nullptr, const QString &title = QString(), const QString &label = QString(), double value = 0.0, double minValue = -2147483647.0, double maxValue = 2147483647.0, int decimals = 1, bool *ok = nullptr, Qt::WindowFlags flags = Qt::WindowFlags()): 静态函数,显示一个浮点数输入对话框并返回用户输入的浮点数。参数与 getInt 类似,但 valueminValue 和 maxValue 是双精度浮点数,decimals 指定了小数点后的位数。
  • static QListWidgetItem getItem(QWidget *parent = nullptr, const QString &title = QString(), const QString &label = QString(), const QStringList &items = QStringList(), int current = 0, bool editable = true, bool *ok = nullptr, Qt::WindowFlags flags = Qt::WindowFlags()): 静态函数,显示一个列表选择对话框并返回用户选择的列表项。items 是可选项的列表,current 是默认选择的项。
  • void setInputMode(QInputDialog::InputMode mode): 设置输入对话框的模式(文本、整数、浮点数或列表)。
  • void setComboBoxItems(const QStringList &items): 当输入模式为列表时,设置列表项。
3、重要输入模式

以下是QInputDialog类中一些常见的输入模式及其简要介绍:

  • QLineEdit::Normal:正常文本输入模式。
  • QLineEdit::NoEcho:无回显模式。
  • QLineEdit::Password:密码输入模式。
  • QLineEdit::PasswordEcho0nEdit:编辑时显示密码输入模式。
#include <QApplication>  
#include <QWidget>  
#include <QLabel>  
#include <QPushButton>  
#include <QVBoxLayout>  
#include <QInputDialog>  
#include <QDebug>  
  
class InputDialogDemo : public QWidget {  
    Q_OBJECT  
  
public:  
    InputDialogDemo(QWidget *parent = nullptr) : QWidget(parent) {  
        QVBoxLayout *layout = new QVBoxLayout(this);  
  
        QLabel *label = new QLabel("请输入一些文本:", this);  
        layout->addWidget(label);  
  
        QPushButton *button = new QPushButton("打开输入对话框", this);  
        layout->addWidget(button);  
  
        connect(button, &QPushButton::clicked, this, &InputDialogDemo::onInputButtonClicked);  
  
        this->labelToUpdate = new QLabel("等待输入...", this);  
        layout->addWidget(this->labelToUpdate);  
  
        this->setLayout(layout);  
        this->setWindowTitle("输入对话框例子");  
    }  
  
private slots:  
    void onInputButtonClicked() {  
        bool ok;  
        QString text = QInputDialog::getText(this, "输入对话框", "请输入文本:", QLineEdit::Normal, "", &ok);  
        if (ok && !text.isEmpty()) {  
            this->labelToUpdate->setText("你输入了: " + text);  
            qDebug() << "用户输入的文本:" << text;  
        } else {  
            this->labelToUpdate->setText("未输入或取消");  
        }  
    }  
  
private:  
    QLabel *labelToUpdate;  
};  
  
int main(int argc, char *argv[]) {  
    QApplication app(argc, argv);  
  
    InputDialogDemo demo;  
    demo.show();  
  
    return app.exec();  
}  

觉得有帮助的话,打赏一下呗。。

           


http://www.kler.cn/a/381708.html

相关文章:

  • linux下各文件类型与作用
  • 前端Python应用指南(三)Django vs Flask:哪种框架适合构建你的下一个Web应用?
  • Android Jetpack常用组件‌
  • 优化 invite_codes 表的 SQL 创建语句
  • Spring常见面试题总结
  • Hive SQL 之 `LATERAL VIEW EXPLODE` 的正确打开方式
  • RabbitMQ高级特性
  • 产品经理笔记
  • Android无限层扩展多级recyclerview列表+实时搜索弹窗
  • 双token无感刷新nodejs+vue3(保姆级教程)
  • 【Eclipse系列】Eclipse版本与jdk对应版本
  • MySQL 安装与配置
  • 大数据-204 数据挖掘 机器学习理论 - 混淆矩阵 sklearn 决策树算法评价
  • 如何用pycharm连接sagemath?
  • FPGA跨时钟域处理方法
  • 【MATLAB源码-第206期】基于matlab的差分进化算法(DE)机器人栅格路径规划,输出做短路径图和适应度曲线。
  • 独显装完ubuntu后启动黑屏显示/dev/sda:clean files blocks的解决方案
  • 基于java+SpringBoot+Vue的微服务在线教育系统设计与实现
  • 指标+AI+BI:构建数据分析新范式丨2024袋鼠云秋季发布会回顾
  • 循环神经网络RNN文本分类
  • Gitlab自动化相关脚本
  • 国标GB28181视频平台EasyCVR私有化视频平台工地防盗视频监控系统方案
  • PHP的四大安全策略
  • 第二次web前端作业(西安欧鹏)
  • Web前端第二次作业
  • Docker:介绍与安装