输入值可以是字符串、数字或列表中的项目。必须设置一个标签来告诉用户他们应该输入什么。
提供了五个静态便利函数: getText ()、 getMultiLineText ()、getInt()、 getDouble ()和 getItem ()。 所有函数都可以以类似的方式使用
完成以下功能
创建一个QDialog工程
dialog.h
#ifndef DIALOG_H
#define DIALOG_H
#include
#include
#include
#include
#include
QT_BEGIN_NAMESPACE
namespace Ui { class Dialog; }
QT_END_NAMESPACE
class Dialog : public QDialog
{
Q_OBJECT
public:
Dialog(QWidget *parent = nullptr);
~Dialog();
private:
Ui::Dialog *ui;
QPushButton *noButton;
QLineEdit *noEdit;
QPushButton *nameButton;
QLineEdit *nameEdit;
QPushButton *sexButton;
QLineEdit *sexEdit;
QPushButton *scoreButton;
QLineEdit *scoreEdit;
private slots:
void noFunc();
void sexFunc();
};
#endif // DIALOG_H
dialog.cpp
先把基础的对象和布局完成
QGridLayout *gl=new QGridLayout(this);
noButton=new QPushButton("学号");
noEdit=new QLineEdit("202154515");
nameButton=new QPushButton("姓名");
nameEdit=new QLineEdit("张三");
sexButton=new QPushButton("性别");
sexEdit=new QLineEdit("男");
scoreButton=new QPushButton("分数");
scoreEdit=new QLineEdit("90");
gl->addWidget(noButton,0,0);
gl->addWidget(noEdit,0,1);
gl->addWidget(nameButton,1,0);
gl->addWidget(nameEdit,1,1);
gl->addWidget(sexButton,2,0);
gl->addWidget(sexEdit,2,1);
gl->addWidget(scoreButton,3,0);
gl->addWidget(scoreEdit,3,1);
首先实现noFunc()函数
void Dialog::noFunc()
{
bool ok;
QString strText=QInputDialog::getText(this,"标准输入对话框","请输入学号",QLineEdit::Normal,noEdit->text(),&ok);
if(ok && !strText.isEmpty())
{
noEdit->setText(strText);
}
}
静态便利函数,用于从用户那里获取字符串。
title 是显示在对话框标题栏中的文本。 label 是显示给用户的文本(它应该说明应该输入什么)。 text 是放置在行编辑中的默认文本。 mode 是行编辑将使用的回显模式。 inputMethodHints 是输入法提示,如果输入法处于活动状态,将在编辑小组件中使用。
若 ok 为非 null *如果用户按 OK,则 ok 将设置为 true,如果用户按 Cancel ,则设置为 false。对话框的父级是父 级。该对话框将是模态的,并使用指定的小部件标志 。
如果对话框被接受,此函数将返回对话框行编辑中的文本。如果对话框被拒绝,则 null QString 被返回。
如果字符串没有字符则返回true;否则返回false。
实现sexFunc()函数
void Dialog::sexFunc()
{
bool ok;
QStringList list;
list<<"男"<<"女";
QString strItem=QInputDialog::getItem(this,"标准输入对话框","请选择性别",list,0,false,&ok);
if(ok && !strItem.isEmpty())
{
sexEdit->setText(strItem);
}
}
静态便利功能,允许用户从字符串列表中选择一个项目。
title 是显示在对话框标题栏中的文本。 label 是显示给用户的文本(它应该说明应该输入什么)。 items 是插入到组合框中的字符串列表。 current 是应为当前项目的项的编号。 inputMethodHints 是输入法提示,如果组合框是可编辑的,并且输入法处于活动状态,则将使用该提示。
若 editable 为 true,用户可以输入自己的文本;否则,用户只能选择现有项目之一。
若 ok 为非 null *如果用户按 OK,则 ok 将设置为 true,如果用户按 Cancel ,则设置为 false。对话框的父级是父 级。该对话框将是模态的,并使用小部件标志 。
此函数返回当前项的文本,如果 editable 为 true,则返回组合框的当前文本。
完整代码
#include "dialog.h"
#include "ui_dialog.h"
Dialog::Dialog(QWidget *parent)
: QDialog(parent)
, ui(new Ui::Dialog)
{
ui->setupUi(this);
QGridLayout *gl=new QGridLayout(this);
noButton=new QPushButton("学号");
noEdit=new QLineEdit("202154515");
nameButton=new QPushButton("姓名");
nameEdit=new QLineEdit("张三");
sexButton=new QPushButton("性别");
sexEdit=new QLineEdit("男");
scoreButton=new QPushButton("分数");
scoreEdit=new QLineEdit("90");
gl->addWidget(noButton,0,0);
gl->addWidget(noEdit,0,1);
gl->addWidget(nameButton,1,0);
gl->addWidget(nameEdit,1,1);
gl->addWidget(sexButton,2,0);
gl->addWidget(sexEdit,2,1);
gl->addWidget(scoreButton,3,0);
gl->addWidget(scoreEdit,3,1);
connect(noButton,&QPushButton::clicked,this,&Dialog::noFunc);
connect(sexButton,&QPushButton::clicked,this,&Dialog::sexFunc);
}
Dialog::~Dialog()
{
delete ui;
}
void Dialog::noFunc()
{
bool ok;
QString strText=QInputDialog::getText(this,"标准输入对话框","请输入学号",QLineEdit::Normal,noEdit->text(),&ok);
if(ok && !strText.isEmpty())
{
noEdit->setText(strText);
}
}
void Dialog::sexFunc()
{
bool ok;
QStringList list;
list<<"男"<<"女";
QString strItem=QInputDialog::getItem(this,"标准输入对话框","请选择性别",list,0,false,&ok);
if(ok && !strItem.isEmpty())
{
sexEdit->setText(strItem);
}
}