当前位置 博文首页 > liuguangshibei的博客:QT学习——day8
主要实现一个用户数据输入的接口。
提供多种静态成员函数以实现多种方法。(引用自QT官方帮助文档)
返回值:double
getDouble(QWidget *parent, const QString &title, const QString &label, double value = 0, double min = -2147483647, double max = 2147483647, int decimals = 1, bool *ok = nullptr, Qt::WindowFlags flags = ...)
返回值:double
getDouble(QWidget *parent, const QString &title, const QString &label, double value, double min, double max, int decimals, bool *ok, Qt::WindowFlags flags, double step)
返回值:int
getInt(QWidget *parent, const QString &title, const QString &label, int value = 0, int min = -2147483647, int max = 2147483647, int step = 1, bool *ok = nullptr, Qt::WindowFlags flags = ...)
返回值:QString
getItem(QWidget *parent, const QString &title, const QString &label, const QStringList &items, int current = 0, bool editable = true, bool *ok = nullptr, Qt::WindowFlags flags = ..., Qt::InputMethodHints inputMethodHints = Qt::ImhNone)
返回值:QString
getMultiLineText(QWidget *parent, const QString &title, const QString &label, const QString &text = QString(), bool *ok = nullptr, Qt::WindowFlags flags = ..., Qt::InputMethodHints inputMethodHints = Qt::ImhNone)
返回值:QString
getText(QWidget *parent, const QString &title, const QString &label, QLineEdit::EchoMode mode = QLineEdit::Normal, const QString &text = QString(), bool *ok = nullptr, Qt::WindowFlags flags = ..., Qt::InputMethodHints inputMethodHints = Qt::ImhNone)
实例化操作:
1.int类型的输入框:
int ret=QInputDialog::getInt(this,"年龄","你过年多大啦:",20,10,110,2);
QMessageBox::about(this,"年龄","我过年"+QString::number(ret)+"岁啦!!!");//QString::number一个强制类型转化
2.double类型的输入框:
double ret=QInputDialog::getDouble(this,"年龄","你过年多大啦:",20,10,110,2);//最后一个参数与int的不同,为double型数据小数点后保留几位,如上为两位。其余与int类型均相同。
3.item类型的输入框(下拉框类型):
QStringList items;
items<<"C++"<<"C#"<<"PHP"<<"JAVA"<<"GoLong"<<"Python"<<"CSS";
QString str=QInputDialog::getItem(this,"请选择你最喜欢的编程语言:","我最喜欢的语言是:",items,1,false);//最后一个参数为false则下拉框中的值不能被修改,为true则可以被修改。
QMessageBox::about(this,"年龄","我最喜欢的语言是:"+str);
QStringList items;->继承与QList类,与C++中STL中的list类类似。
4.文本读取类(可用作密码输入):
QString pwd=QInputDialog::getText(this,"登录","请输入密码!",QLineEdit::Password,"15801");//倒数第二个参数为枚举值。
QMessageBox::about(this,"登录","密码为:"+pwd);
枚举值分布(引用自官方文档):
Constant:QLineEdit::Normal
Value:0
Description:Display characters as they are entered. This is the default.
QLineEdit::NoEcho
1
Do not display anything. This may be appropriate for passwords where even the length of the password should be kept secret.
QLineEdit::Password
2
Display platform-dependent password mask characters instead of the characters actually entered.
QLineEdit::PasswordEchoOnEdit
3
Display characters as they are entered while editing otherwise display characters as with Password.
5.多行文本读取类:
可进行多行数据的写入。
QString m_t=QInputDialog::getMultiLineText(this,"","","afda");
QMessageBox::about(this,"",m_t);
用于程序在执行期间向用户表达直观的反馈。
创建进度条对话框窗口对象时调用的构造函数。
调用该函数可以通过构造函数初始化窗口的提示、按钮值、进度框的最大最小值,父窗口等属性。
QProgressDialog(const QString &labelText, const QString &cancelButtonText, int minimum, int maximum, QWidget *parent = nullptr, Qt::WindowFlags f = ...)
第二个构造函数,调用该函数只能指定父窗口。
QProgressDialog(QWidget *parent = nullptr, Qt::WindowFlags f = ...)
故需调用如下的各种set函数来进行初始化。
void
setCancelButton(QPushButton *cancelButton)
void
setLabel(QLabel *label)
void
setMaximum(int maximum)
void
setMinimum(int minimum)
实例化演示:
暂时用Timer类代替程序的执行来实现进度条的演示。
1.创建窗口并初始化。
2.显示窗口。
3.更新进度条。
QProgressDialog *pro=new QProgressDialog("拷贝中。。。","取消拷贝",0,100,this);
pro->show();//显示窗口
QTimer *timer=new QTimer(this);
timer->start(100);//每100ms发一次信号
static int value=0;
connect(timer,&QTimer::timeout,this,[=](){
pro->setValue(value);
value++;
if(value>pro->maximum())
{
timer->stop();//满足条件后停止发射信号
value=0;
}//connect函数的第一第三个参数必须为对象指针,否则报错
connect(pro,&QProgressDialog::canceled,this,[=](){
timer->stop();
value=0;
});
});
// 设置窗口的显示状态(模态, 非模态)
/*
参数:
Qt::NonModal -> 非模态
Qt::WindowModal -> 模态, 阻塞父窗口
Qt::ApplicationModal -> 模态, 阻塞应用程序中的所有窗口。
可以根据以上成员函数将进度条窗口设置为模态显示。
cs