表单输入验证,多个焦点问题

发布于 2024-10-17 13:15:07 字数 870 浏览 5 评论 0原文

我在尝试验证 QT4 中的某些输入时遇到问题。

我有一个带有 2 个文本编辑字段的表单。当一个字段失去焦点时,我希望它检查该字段是否为空,如果是,则提醒用户。

这是我的代码:

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。有什么建议吗?

I am having an issue trying to validate some input in QT4.

I have a form with 2 textEdit fields. When one field loses focus, I want it to check if the field is empty, and if so, alert the user.

Here is my code:

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();
    }
}

My issue is that when I run the form and lose focus on the first textEdit (nameEdit) I get a MessageBox from BOTH signals. Any suggestions?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

可是我不能没有你 2024-10-24 13:15:07

我的猜测是:

  1. 您的编辑框在表单上彼此靠近或/和在选项卡顺序中彼此相邻;
  2. 默认情况下,两个编辑框都是空的;
  3. 当您将焦点从空的 nameEdit 移动到下一个小部件(fileextensionEdit)时,会弹出第一个消息框;
  4. 此消息框也会导致 fileextensionEdit 失去焦点,并且由于它是空的,因此会显示第二个消息框。

希望这有帮助,问候

my guess would be:

  1. your edit boxes are positioned close to each other on the form or/and next to each other in the tab order;
  2. both edit boxes are empty by default;
  3. when you're moving focus from the empty nameEdit to the next widget which is fileextensionEdit, first message box pops up;
  4. this message box causes fileextensionEdit also to lose focus and since it's empty a second message box gets displayed.

hope this helps, regards

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文