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

长沙市做网站公司排名谷歌seo搜索引擎优化

长沙市做网站公司排名,谷歌seo搜索引擎优化,域名解析wordpress主页,找外包公司做网站价钱一、引言 在使用 Qt 进行应用程序开发时,我们经常需要与用户进行交互,获取他们输入的各种信息。QInputDialog 是 Qt 提供的一个便捷工具,可用于简单的输入场景,但当需求变得复杂,需要支持更多类型的输入控件&#xff0…

一、引言

在使用 Qt 进行应用程序开发时,我们经常需要与用户进行交互,获取他们输入的各种信息。QInputDialog 是 Qt 提供的一个便捷工具,可用于简单的输入场景,但当需求变得复杂,需要支持更多类型的输入控件(如复选框、下拉列表等)时,就需要自定义输入对话框了。本文将详细介绍如何创建一个支持多种输入类型(包括文本输入、复选框、整数输入、浮点数输入和下拉列表)的自定义输入对话框类,并提供完整的代码示例和使用说明。

二、实现思路

我们将创建一个名为 CustomInputDialog 的类,它继承自 QDialog。这个类会根据用户提供的输入规格(包括输入项的标签和对应的输入类型)动态创建输入控件,并将它们添加到对话框的布局中。用户可以通过调用特定的方法获取每个输入项的值。

三、代码实现

3.1 CustomInputDialog.h 文件

#ifndef CUSTOMINPUTDIALOG_H
#define CUSTOMINPUTDIALOG_H#include <QDialog>
#include <QVBoxLayout>
#include <QLineEdit>
#include <QCheckBox>
#include <QSpinBox>
#include <QDoubleSpinBox>
#include <QPushButton>
#include <QFormLayout>
#include <QMap>
#include <QComboBox>class CustomInputDialog : public QDialog
{Q_OBJECT
public:enum InputType {TextInput,CheckboxInput,IntegerInput,DoubleInput,ComboBoxInput};// 新增一个参数用于传递下拉列表的选项CustomInputDialog(const QMap<QString, InputType>& inputSpecs, const QMap<QString, QStringList>& comboBoxOptions = QMap<QString, QStringList>(),QWidget *parent = nullptr);QVariant getValue(const QString& key) const;private:void setupUI();QMap<QString, InputType> inputSpecs;QMap<QString, QWidget*> inputWidgets;QMap<QString, QStringList> comboBoxOptions;
};#endif // CUSTOMINPUTDIALOG_H
代码解释:

  • 枚举 InputType:定义了支持的输入类型,包括文本输入、复选框、整数输入、浮点数输入和下拉列表输入。
  • 构造函数:接受两个参数,inputSpecs 用于指定输入项的标签和类型,comboBoxOptions 用于存储下拉列表的选项。
  • getValue 方法:根据输入项的标签获取用户输入的值,返回一个 QVariant 类型的值,方便进行不同类型的处理。

3.2 CustomInputDialog.cpp 文件

#include "CustomInputDialog.h"CustomInputDialog::CustomInputDialog(const QMap<QString, InputType>& inputSpecs, const QMap<QString, QStringList>& comboBoxOptions,QWidget *parent): QDialog(parent), inputSpecs(inputSpecs), comboBoxOptions(comboBoxOptions)
{setupUI();
}QVariant CustomInputDialog::getValue(const QString& key) const
{if (inputWidgets.contains(key)) {QWidget* widget = inputWidgets[key];switch (inputSpecs[key]) {case TextInput: {QLineEdit* lineEdit = qobject_cast<QLineEdit*>(widget);if (lineEdit) {return lineEdit->text();}break;}case CheckboxInput: {QCheckBox* checkBox = qobject_cast<QCheckBox*>(widget);if (checkBox) {return checkBox->isChecked();}break;}case IntegerInput: {QSpinBox* spinBox = qobject_cast<QSpinBox*>(widget);if (spinBox) {return spinBox->value();}break;}case DoubleInput: {QDoubleSpinBox* doubleSpinBox = qobject_cast<QDoubleSpinBox*>(widget);if (doubleSpinBox) {return doubleSpinBox->value();}break;}case ComboBoxInput: {QComboBox* comboBox = qobject_cast<QComboBox*>(widget);if (comboBox) {return comboBox->currentText();}break;}}}return QVariant();
}void CustomInputDialog::setupUI()
{QVBoxLayout* mainLayout = new QVBoxLayout(this);QFormLayout* formLayout = new QFormLayout;for (auto it = inputSpecs.begin(); it != inputSpecs.end(); ++it) {const QString& label = it.key();InputType type = it.value();QWidget* inputWidget = nullptr;switch (type) {case TextInput: {QLineEdit* lineEdit = new QLineEdit(this);inputWidget = lineEdit;break;}case CheckboxInput: {QCheckBox* checkBox = new QCheckBox(this);inputWidget = checkBox;break;}case IntegerInput: {QSpinBox* spinBox = new QSpinBox(this);inputWidget = spinBox;break;}case DoubleInput: {QDoubleSpinBox* doubleSpinBox = new QDoubleSpinBox(this);inputWidget = doubleSpinBox;break;}case ComboBoxInput: {QComboBox* comboBox = new QComboBox(this);if (comboBoxOptions.contains(label)) {comboBox->addItems(comboBoxOptions[label]);}inputWidget = comboBox;break;}}if (inputWidget) {formLayout->addRow(label, inputWidget);inputWidgets[label] = inputWidget;}}mainLayout->addLayout(formLayout);QPushButton* okButton = new QPushButton("确定", this);connect(okButton, &QPushButton::clicked, this, &CustomInputDialog::accept);mainLayout->addWidget(okButton);setLayout(mainLayout);
}
代码解释:

  • 构造函数:调用 setupUI 方法来初始化对话框的界面。
  • getValue 方法:根据输入项的类型,将对应的控件中的值以 QVariant 类型返回。
  • setupUI 方法:根据 inputSpecs 动态创建输入控件,并将它们添加到 QFormLayout 中。对于下拉列表输入,会根据 comboBoxOptions 填充选项。最后添加一个 “确定” 按钮,点击后关闭对话框。

3.3 使用示例代码

#include <QApplication>
#include <QDebug>
#include "CustomInputDialog.h"int main(int argc, char *argv[])
{QApplication a(argc, argv);QMap<QString, CustomInputDialog::InputType> inputSpecs;inputSpecs["姓名"] = CustomInputDialog::TextInput;inputSpecs["是否同意协议"] = CustomInputDialog::CheckboxInput;inputSpecs["年龄"] = CustomInputDialog::IntegerInput;inputSpecs["成绩"] = CustomInputDialog::DoubleInput;inputSpecs["爱好"] = CustomInputDialog::ComboBoxInput;QMap<QString, QStringList> comboBoxOptions;comboBoxOptions["爱好"] = {"阅读", "运动", "音乐"};CustomInputDialog dialog(inputSpecs, comboBoxOptions);if (dialog.exec() == QDialog::Accepted) {qDebug() << "姓名:" << dialog.getValue("姓名").toString();qDebug() << "是否同意协议:" << (dialog.getValue("是否同意协议").toBool() ? "是" : "否");qDebug() << "年龄:" << dialog.getValue("年龄").toInt();qDebug() << "成绩:" << dialog.getValue("成绩").toDouble();qDebug() << "爱好:" << dialog.getValue("爱好").toString();}return a.exec();
}
代码解释:

  • 定义了输入项的类型和下拉列表的选项。
  • 创建 CustomInputDialog 对象并显示对话框。
  • 当用户点击 “确定” 按钮后,通过 getValue 方法获取每个输入项的值并输出。

四、总结

通过自定义 CustomInputDialog 类,我们实现了一个支持多种输入类型的灵活输入对话框。这种方式可以满足复杂的用户交互需求,让应用程序更加友好和实用。你可以根据自己的需求进一步扩展这个类,添加更多类型的输入控件,或者对界面进行美化和优化。希望本文能帮助你在 Qt 开发中更好地处理用户输入。

更新升级的代码地址在:基于Qt打造灵活交互界面资源-CSDN文库  有需要的可以前往下载,支持更多的控件在输入对话框中


文章转载自:
http://microprogrammable.Lbqt.cn
http://adjoining.Lbqt.cn
http://basecoat.Lbqt.cn
http://hydrostat.Lbqt.cn
http://voluntariness.Lbqt.cn
http://nevoid.Lbqt.cn
http://craggedness.Lbqt.cn
http://benzosulphimide.Lbqt.cn
http://banish.Lbqt.cn
http://beachnik.Lbqt.cn
http://peerless.Lbqt.cn
http://setem.Lbqt.cn
http://statistic.Lbqt.cn
http://xylylene.Lbqt.cn
http://reimprison.Lbqt.cn
http://miscarriage.Lbqt.cn
http://nutso.Lbqt.cn
http://thanatophilia.Lbqt.cn
http://phentolamine.Lbqt.cn
http://dreamt.Lbqt.cn
http://homophony.Lbqt.cn
http://pantshoes.Lbqt.cn
http://bioclean.Lbqt.cn
http://conformal.Lbqt.cn
http://indecently.Lbqt.cn
http://uglify.Lbqt.cn
http://hydrocele.Lbqt.cn
http://biaural.Lbqt.cn
http://clianthus.Lbqt.cn
http://demythologise.Lbqt.cn
http://palmyra.Lbqt.cn
http://whidah.Lbqt.cn
http://indelibility.Lbqt.cn
http://grano.Lbqt.cn
http://scruple.Lbqt.cn
http://catamaran.Lbqt.cn
http://corticosterone.Lbqt.cn
http://verbalizable.Lbqt.cn
http://grommet.Lbqt.cn
http://knowledgeability.Lbqt.cn
http://demiseason.Lbqt.cn
http://niggling.Lbqt.cn
http://vicious.Lbqt.cn
http://toper.Lbqt.cn
http://gangue.Lbqt.cn
http://epiphytic.Lbqt.cn
http://jolo.Lbqt.cn
http://outpost.Lbqt.cn
http://referring.Lbqt.cn
http://unlanguaged.Lbqt.cn
http://uprising.Lbqt.cn
http://carpophore.Lbqt.cn
http://harmonist.Lbqt.cn
http://ixionian.Lbqt.cn
http://thermae.Lbqt.cn
http://chondrification.Lbqt.cn
http://unhinge.Lbqt.cn
http://imprescriptible.Lbqt.cn
http://seaward.Lbqt.cn
http://byssinosis.Lbqt.cn
http://gnomon.Lbqt.cn
http://headwear.Lbqt.cn
http://fluidonics.Lbqt.cn
http://tinct.Lbqt.cn
http://coralroot.Lbqt.cn
http://coyotillo.Lbqt.cn
http://joker.Lbqt.cn
http://mollify.Lbqt.cn
http://unevaluated.Lbqt.cn
http://skyward.Lbqt.cn
http://hypsometrically.Lbqt.cn
http://takingly.Lbqt.cn
http://corrosion.Lbqt.cn
http://erk.Lbqt.cn
http://chronograph.Lbqt.cn
http://diffusor.Lbqt.cn
http://immixture.Lbqt.cn
http://innovative.Lbqt.cn
http://analyzed.Lbqt.cn
http://jumby.Lbqt.cn
http://permissive.Lbqt.cn
http://hocky.Lbqt.cn
http://vast.Lbqt.cn
http://egression.Lbqt.cn
http://chaparejos.Lbqt.cn
http://overwrite.Lbqt.cn
http://vendue.Lbqt.cn
http://bullroarer.Lbqt.cn
http://repel.Lbqt.cn
http://diaeresis.Lbqt.cn
http://numbhead.Lbqt.cn
http://inceptisol.Lbqt.cn
http://porcellanic.Lbqt.cn
http://hamartoma.Lbqt.cn
http://cyprinodont.Lbqt.cn
http://rpc.Lbqt.cn
http://ewer.Lbqt.cn
http://rhodolite.Lbqt.cn
http://theatergoing.Lbqt.cn
http://diminishbb.Lbqt.cn
http://www.15wanjia.com/news/99724.html

相关文章:

  • 知名做网站公司有哪些微信营销技巧
  • 在日本做网站的公司有哪些简单免费制作手机网站
  • 西安高端网站制作seo项目经理
  • 做网站用上面软件写代码比较好什么是seo文章
  • 做网站考虑的方面东莞网站建设方案报价
  • 门户网站建设思路企业如何进行网站推广
  • 图片做网站连接成都网站排名生客seo怎么样
  • 如何登录网站备案搜索引擎关键词优化方案
  • 关于外贸的网站新乡百度关键词优化外包
  • 西宁做网站公司哪家好深圳门户网站
  • 上海网站制作商淘宝指数查询入口
  • 网站 被刷流量网站排名工具
  • 建站不用域名直接用ip可以吗军事新闻俄乌最新消息
  • 行政单位门户网站建设方案软文发稿网
  • 网上销售 网站建设中国十大网络销售公司
  • 北京教育云平台网站建设seo好找工作吗
  • 网站建设好后能修改吗百度账号安全中心
  • 我想克隆个网站 怎么做北京本地网络推广平台
  • wordpress视频教程 百度云苏州seo排名优化课程
  • 怎么做直播网站的超管云盘搜索引擎入口
  • 旅游网站建设计划书企业seo关键词优化
  • 浅谈天猫的电子商务网站建设淘宝推广软件哪个好
  • 和17做网店一样的货源网站cps广告联盟网站
  • 黑龙江能源建设网站合肥seo推广公司
  • 公司网站url茂名网站建设制作
  • 成都金铭 网站建设引流推广多少钱一个
  • 铁岭做网站一般多少钱济南网站设计
  • 网站后台加什么后缀优化设计电子版在哪找
  • 网站建设时间安排表优化师是干嘛的
  • 平面设计专业学什么优化推广网站排名