QInputDialog
QInputDialog是Qt框架中的一个对话框,用于显示输入对话框。它允许用户可以输入一些信息,例如文本、数字或日期等,然后返回所输入的值。
QInputDialog通常可以通过调用其静态函数getXXX()来使用。其中,XXX表示所需的输入类型,例如getText()用于获取文本输入,getInt()用于获取整数输入,getDate()用于获取日期输入等等。该函数会弹出一个对应类型的输入对话框,用户可以在其中输入所需的值,然后单击OK按钮返回所输入的值。
除了基本的输入功能之外,QInputDialog还提供了一些其他的特性。例如,它可以根据传递给它的初始值预先设置输入对话框的初始状态。它还可以设置其对话框标题以及任何其他自定义属性(例如,设置最大和最小值范围)。
举例:
dialog.h
#ifndef DIALOG_H
#define DIALOG_H
#include <QDialog>
#include <QPushButton>
#include <QLineEdit>
#include <QGridLayout>
#include <QInputDialog>
class Dialog : public QDialog
{
Q_OBJECT
public:
Dialog(QWidget *parent = nullptr);
~Dialog();
QPushButton *butt_id,*butt_name,*butt_sex,*butt_salary;
QLineEdit *line_id,*line_name,*line_sex,*line_salary;
private slots:
void setline_idfunc();
void setline_sex();
};
#endif // DIALOG_H
dialog.cpp
#include "dialog.h"
Dialog::Dialog(QWidget *parent)
: QDialog(parent)
{
//创建需要的控件
butt_id=new QPushButton("员工id:");
butt_name=new QPushButton("员工姓名:");
butt_sex=new QPushButton("员工性别:");
butt_salary=new QPushButton("员工工资:");
line_id = new QLineEdit("20220102");
line_name = new QLineEdit("王xx");
line_sex = new QLineEdit("男");
line_salary = new QLineEdit("工资");
line_id->setReadOnly(true);//设置文本只读
line_name->setReadOnly(true);//设置文本只读
line_sex->setReadOnly(true);//设置文本只读
line_salary->setReadOnly(true);//设置文本只读
QGridLayout *qglayout=new QGridLayout(this);
qglayout->addWidget(butt_id,0,0);
qglayout->addWidget(butt_name,1,0);
qglayout->addWidget(butt_sex,2,0);
qglayout->addWidget(butt_salary,3,0);
qglayout->addWidget(line_id,0,1);
qglayout->addWidget(line_name,1,1);
qglayout->addWidget(line_sex,2,1);
qglayout->addWidget(line_salary,3,1);
//连接槽函数
connect(butt_id,SIGNAL(clicked()),this,SLOT(setline_idfunc()));
connect(butt_sex,SIGNAL(clicked()),this,SLOT(setline_sex()));
}
Dialog::~Dialog()
{
}
void Dialog::setline_idfunc()
{
bool isbool;
//用于打开一个输入对话框,让用户输入文本 。
/*parent:指定输入对话框的父窗口,可以为nullptr。
title:指定输入对话框的标题。
label:指定要显示在输入框上面的文本标签。
echoMode:指定输入框上所输入的内容是否应该被隐藏。它是一个枚举值,有四个选项:QLineEdit::Normal(正常模式)、QLineEdit::NoEcho(不回显)、QLineEdit::Password(密码模式)、QLineEdit::PasswordEchoOnEdit(编辑时回显密码)。
text:指定输入框默认显示的文本。如果你想让用户输入新的值,可以将此参数设置为空字符串("")。
*/
QString strString = QInputDialog::getText(this,"标准输入对话框","请输入学号:",
QLineEdit::Normal,line_id->text(),&isbool);
if(isbool && !strString.isEmpty()) //判断字符串是否为空 是否点击了确认
{
line_id->setText(strString);
}
}
void Dialog::setline_sex()
{
QStringList qsl;
qsl<<"男"<<"女";
bool isbool;
/*用于创建一个输入对话框,让用户从一个字符串列表中选择一个项。形参如下
parent:父窗口指针,用于指定对话框的父窗口。
title:对话框标题,用于显示在对话框顶部的标题栏中。
label:标签文本,用于显示在对话框中间的文本标签中,提示用户行为。
items:列表项,用于指定可供选择的字符串列表。该参数应该是一个QStringList类型的列表。
current:当前选中项的索引,表示在打开对话框时默认选中的项的索引。
editable:是否允许用户编辑列表中的文本,如果为true,则用户可以在下拉列表中输入新的文本。
okButton:确认按钮文本,用于显示在对话框底部的确认按钮上。
cancelButton:取消按钮文本,用于显示在对话框底部的取消按钮上。
options:对话框选项,可以控制对话框的一些行为。目前QInputDialog只支持一个选项:QInputDialog::NoButtons,用于隐藏所有的按钮,包括确认和取消按钮。*/
QString strsex=QInputDialog::getItem(this,"sec选择","请选择:",qsl,1,false,&isbool);
if(isbool && !strsex.isEmpty()){
line_sex->setText(strsex);
}
}
效果: