表单输入验证,多焦点问题
Posted
技术标签:
【中文标题】表单输入验证,多焦点问题【英文标题】:Form input validation, multiple focus issues 【发布时间】:2011-02-15 01:25:24 【问题描述】:我在尝试验证 QT4 中的某些输入时遇到问题。
我有一个带有 2 个 textEdit 字段的表单。当一个字段失去焦点时,我希望它检查该字段是否为空,如果是,则提醒用户。
这是我的代码:
void newconsole::on_nameEdit_lostFocus()
if (this->ui->nameEdit->text().size() < 1)
QMessageBox b;
b.setText("Name must be longer than 0 characters.");
b.setIcon(QMessageBox::Information);
b.setStandardButtons(QMessageBox::Ok);
b.show();
void newconsole::on_fileextensionEdit_lostFocus()
if (this->ui->fileextensionEdit->text().size() < 1)
QMessageBox b;
b.setText("File extension must be longer than 0 characters.");
b.setIcon(QMessageBox::Information);
b.setStandardButtons(QMessageBox::Ok);
b.show();
我的问题是,当我运行表单并失去对第一个 textEdit (nameEdit) 的关注时,我从两个信号中都得到了一个 MessageBox。有什么建议吗?
【问题讨论】:
您是否考虑过使用QValidator 进行输入验证? 【参考方案1】:我的猜测是:
-
您的编辑框在表单上彼此靠近或/和按 Tab 键顺序彼此相邻;
默认两个编辑框都是空的;
当您将焦点从空的 nameEdit 移动到下一个小部件 fileextensionEdit 时,会弹出第一个消息框;
此消息框会导致 fileextensionEdit 也失去焦点,因为它是空的,所以会显示第二个消息框。
希望这会有所帮助,问候
【讨论】:
如何在 QT Designer 中更改标签顺序?我似乎找不到这样做的地方。 来自 QT Designer(4.6.3):编辑->编辑标签顺序以上是关于表单输入验证,多焦点问题的主要内容,如果未能解决你的问题,请参考以下文章