管理控件文本
接上文:https://blog.csdn.net/MelyLenient/article/details/124204585
我们已经初步创建完毕控件基本框架。
接下来就是对文本进行控制。
本文学习对文本的更改加以限制。
添加槽函数
对我们控件中的每一个文本框添加一个数值更改触发的槽函数,这样随时可以对输入框中的数据进行监控校验。
添加槽函数教学:如何添加槽函数
我们一共添加四个槽函数:槽函数名称如图所示。
将槽函数加入到主文件
分别添加到h文件和c文件中。
对内容进行处理
按照上述完成后,我们就获得了针对该控件四个文本框内容改变时数据处理的空槽函数。
接下来根据我们的需要对其进行处理即可。
我们要做一个IP控件。那么为了方便,我们使用正则校验对其进行数据输入限制。
首先添加相应的头文件
#include <QRegExpValidator>
为每个文本框添加正则校验。
void MelyPlug::ip1_changed(const QString& arg1)
{
QRegExp regExp("^((25[0-5]|2[0-4]\\d|[1]{1}\\d{1}\\d{1}|[1-9]{1}\\d{1}|\\d{1})($|(?!\\.$)\\.))$");
ui.lineEdit->setValidator(new QRegExpValidator(regExp));
}
void MelyPlug::ip2_changed(const QString& arg1)
{
QRegExp regExp("^((25[0-5]|2[0-4]\\d|[1]{1}\\d{1}\\d{1}|[1-9]{1}\\d{1}|\\d{1})($|(?!\\.$)\\.))$");
ui.lineEdit_2->setValidator(new QRegExpValidator(regExp));
}
void MelyPlug::ip3_changed(const QString& arg1)
{
QRegExp regExp("^((25[0-5]|2[0-4]\\d|[1]{1}\\d{1}\\d{1}|[1-9]{1}\\d{1}|\\d{1})($|(?!\\.$)\\.))$");
ui.lineEdit_3->setValidator(new QRegExpValidator(regExp));
}
void MelyPlug::ip4_changed(const QString& arg1)
{
QRegExp regExp("^((25[0-5]|2[0-4]\\d|[1]{1}\\d{1}\\d{1}|[1-9]{1}\\d{1}|\\d{1})($|(?!\\.$)\\.))$");
ui.lineEdit_4->setValidator(new QRegExpValidator(regExp));
}
注意,这里的ui不是指针类型,因为我们h文件声明的ui不是指针,如果h文件声明的ui是指针类型,代码应该如下
ui->lineEdit->setValidator(new QRegExpValidator(regExp));
重新生成插件相关文件后,依据上文一篇学会QT使用–设计师自定义控件(QT自定义控件)(二)
更新插件。然后启动测试项目。
在控件中会发现,我们每个项目所能输入最大值为255.