qt 将数字显示到文本框_Qt中使用标准输入框

本文详细介绍了Qt的QInputDialog类,用于创建简易输入对话框,包括输入文本、选择条目和数值。通过示例代码展示了如何使用getText()、getItem()、getInt()和getDouble()方法,便于用户在应用程序中获取输入数据。
部署运行你感兴趣的模型镜像

这一节主要讲一下标准输入框的使用,Qt提供了一个QInputDialog类,这个类提供了几个预先设定好的常用输入对话框。

比如:需要输入文本的时候,他将QlineEdit的一系列控件封装到QInputDialog::getText()中;

需要输入选择条目的时候,他将QComboBox的一系列控件封装到QInputDialog::getItem()中;

需要输入数值的时候,他将QSpinbox的一系列控件封装到QInputDialog::getInt()或QInputDialog::getDouble()中。

以下依旧是用程序来说明:

Dialog.pro#-------------------------------------------------

#

# Project created by QtCreator 2015-10-24T17:32:35

#

#-------------------------------------------------

QT += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = Dialog

TEMPLATE = app

SOURCES += main.cpp

dialog.cpp

HEADERS += dialog.h

dialog.h#ifndef DIALOG_H

#define DIALOG_H

#include

#include

#include

#include

#include

class Dialog : public QDialog

{

Q_OBJECT

public:

Dialog(QWidget *parent = 0);

~Dialog();

public:

QGridLayout *layout;

QPushButton *nameButton,*sexButton,*ageButton,*statureButton;

QLabel *label1,*label2,*label3,*label4,*nameLabel,*sexLabel,*ageLabel,*statureLabel;

private slots:

//设置按钮单击信号的槽

void slotName();

void slotSex();

void slotAge();

void slotStature();

};

#endif // DIALOG_H

dialog.cpp#include "dialog.h"

Dialog::Dialog(QWidget *parent)

: QDialog(parent)

{

setWindowTitle("Input Dialog");

label1=new QLabel("姓名:");

label2=new QLabel("性别:");

label3=new QLabel("年龄:");

label4=new QLabel("身高:");

//创建显示标签,用于显示已选择的信息。

nameLabel=new QLabel("LiMing");

/**

以下调用了QLabel的setFrameStyle()方法,设置QLabel的样式,这里有两个枚举类型--QFrame::Shape和QFrame::Shadow

QFrame::Shape定义了QFrame的框架所使用的外形。当前定义的效果有:

QFrame::NoFrame 不画任何东西

QFrame::Box 在它的内容周围画一个框

QFrame::Panel 画一个平板使内容看起来凸起或者凹陷

QFrame::WinPanel 像Panel,但QFrame绘制三维效果的方式和Microsoft Windows 95(及其它)的一样

QFrame::ToolBarPanel 调用QStyle::drawToolBarPanel()

QFrame::MenuBarPanel 调用QStyle::drawMenuBarPanel()

QFrame::HLine 绘制一个水平线,但没有框任何东西(作为分隔是有用的)

QFrame::VLine 绘制一个竖直线,但没有框任何东西(作为分隔是有用的)

QFrame::StyledPanel 调用QStyle::drawPanel()

QFrame::PopupPanel 调用QStyle::drawPopupPanel()

QFrame::Shadow这个枚举类型定义了QFrame的框架所使用的外形。当前定义的效果有:

QFrame::Plain 框架和内容看来和周围一样高

QFrame::Raised 框架和内容看起来凸起

QFrame::Sunken 框架和内容看起来凹陷

QFrame::MShadow 内部的,对于阴影的掩码

*/

nameLabel->setFrameStyle(QFrame::Panel|QFrame::Sunken);//这里设置了凹陷的效果

sexLabel=new QLabel("man");

sexLabel->setFrameStyle(QFrame::Panel|QFrame::Sunken);

ageLabel=new QLabel("20");

ageLabel->setFrameStyle(QFrame::Panel|QFrame::Sunken);

statureLabel=new QLabel("178");

statureLabel->setFrameStyle(QFrame::Panel|QFrame::Sunken);

nameButton=new QPushButton;

nameButton->setText("...");

sexButton=new QPushButton;

sexButton->setText("...");

ageButton=new QPushButton;

ageButton->setText("...");

statureButton=new QPushButton;

statureButton->setText("...");

layout=new QGridLayout(this);

layout->addWidget(label1,0,0);

layout->addWidget(nameLabel,0,1);

layout->addWidget(nameButton,0,2);

layout->addWidget(label2,1,0);

layout->addWidget(sexLabel,1,1);

layout->addWidget(sexButton,1,2);

layout->addWidget(label3,2,0);

layout->addWidget(ageLabel,2,1);

layout->addWidget(ageButton,2,2);

layout->addWidget(label4,3,0);

layout->addWidget(statureLabel,3,1);

layout->addWidget(statureButton,3,2);

//设置各个Grid列的相对比例,这里是1:4:2

layout->setColumnStretch(0,1);

layout->setColumnStretch(1,4);

layout->setColumnStretch(2,1);

layout->setMargin(10);

//设置窗口的固定大小

this->setFixedSize(300,120);

connect(nameButton,SIGNAL(clicked()),this,SLOT(slotName()));

connect(sexButton,SIGNAL(clicked()),this,SLOT(slotSex()));

connect(ageButton,SIGNAL(clicked()),this,SLOT(slotAge()));

connect(statureButton,SIGNAL(clicked()),this,SLOT(slotStature()));

}

Dialog::~Dialog()

{

}

void Dialog::slotName(){

bool ok;

/*

static QString QInputDialog::getText ( QWidget * parent,const QString & title,const QString &label, QLineEdit::EchoMode mode = QLineEdit::Normal,const QString & text = QString(), bool * ok = 0, Qt::WindowFlags flags = 0 );

第一个参数parent,也就是那个熟悉的父组件的指针;

第二个参数title就是对话框的标题;

第三个参数label是在输入框上面的提示语句;

第四个参数mode用于指明这个QLineEdit的输入模式,取值范围是QLineEdit::EchoMode,默认是Normal,也就是正常显示,你也可以声明为password,这样就是密码的输入显示了;

第五个参数text是QLineEdit的默认字符串;

第六个参数 ok是可选的,如果非NLL,则当用户按下对话框的OK按钮时,这个bool变量会被置为true,可以由这个去判断用户是按下的OK还是Cancel,从而获知这个text是不是有意义;

第七个参数flags用于指定对话框的样式。

*/

QString name=QInputDialog::getText(this,"Username","Please input the name:",QLineEdit::Normal,nameLabel->text(),&ok);

if(ok&&!name.isEmpty()){

nameLabel->setText(name);

}

}

void Dialog::slotSex(){

QStringList list;

list<

bool ok;

/*

static QString QInputDialog::getText ( QWidget * parent,const QString & title,const QString &label, const QStringList &list,int current=0,bool editable=true, bool * ok = 0, Qt::WindowFlags flags = 0 );

第一个参数parent,也就是那个熟悉的父组件的指针;

第二个参数title就是对话框的标题;

第三个参数label是在输入框上面的提示语句;

第四个参数QStringList用于指定需要显示的条目是一个QStringList 对象,

第五个参数current是QStringList 中默认的条目的下标;

第六个参数editable是设置文字是否可以编辑

第七个参数 ok是可选的,如果非NLL,则当用户按下对话框的OK按钮时,这个bool变量会被置为true,可以由这个去判断用户是按下的OK还是Cancel,从而获知这个text是不是有意义;

第八个参数flags用于指定对话框的样式。

*/

QString sex=QInputDialog::getItem(this,"Sex","Please choose the sex",list,0,false,&ok);

if(ok){

sexLabel->setText(sex);

}

}

void Dialog::slotAge(){

bool ok;

/*

static QString QInputDialog::getText ( QWidget * parent,const QString & title,const QString &label, int value ,int minValue=-2147483647, int maxValue = 2147483647, int step=1, bool * ok = 0, Qt::WindowFlags flags = 0 );

第一个参数parent,也就是那个熟悉的父组件的指针

第二个参数title就是对话框的标题

第三个参数label是在输入框上面的提示语句

第四个参数value表示默认值

第五个参数minValue表示最小值

第六个参数maxValue表示最大值

第七个参数step表示各个选项的间隔

第八个参数ok是可选的,如果非NLL,则当用户按下对话框的OK按钮时,这个bool变量会被置为true,可以由这个去判断用户是按下的OK还是Cancel,从而获知这个text是不是有意义;

第九个参数flags用于指定对话框的样式。

*/

int age=QInputDialog::getInt(this,"User age","Please input the age",ageLabel->text().toInt(),0,150,1,&ok);

if(ok){

ageLabel->setText(QString().setNum(age));//将数字变成文本

}

}

void Dialog::slotStature(){

bool ok;

//QInputDialog::getDouble使用方法如getInt

double stature=QInputDialog::getDouble(this,"User stature","Please input the stature",statureLabel->text().toDouble(),0,240.00,1,&ok);//这里文本变成double要进行转换

if(ok){

statureLabel->setText(QString().setNum(stature));

}

}

main.cpp#include "dialog.h"

#include

int main(int argc, char *argv[])

{

QApplication a(argc, argv);

Dialog w;

w.show();

return a.exec();

}

运行截图

您可能感兴趣的与本文相关的镜像

TensorFlow-v2.9

TensorFlow-v2.9

TensorFlow

TensorFlow 是由Google Brain 团队开发的开源机器学习框架,广泛应用于深度学习研究和生产环境。 它提供了一个灵活的平台,用于构建和训练各种机器学习模型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值