我对Qt相当新,如果有人能帮我解决这个问题,我将不胜感激。
我正在使用Qt Creator并使用PlainTextEdit
创建了一个表单。我试图使用if语句来验证在此文本框中输入的文本。我做了类似下面的函数
void validateText (QPlainTextEdit *myWidget)
{
if ((myWidget->toPlainText().endsWith("1")) ||
(myWidget->toPlainText().endsWith("2")) ||
(myWidget->toPlainText().endsWith("3")) ||
(myWidget->toPlainText().endsWith("4")) ||
(myWidget->toPlainText().endsWith("5")) ||
(myWidget->toPlainText().endsWith("6")) ||
(myWidget->toPlainText().endsWith("7")) ||
(myWidget->toPlainText().endsWith("8")) ||
(myWidget->toPlainText().endsWith("9")) ||
(myWidget->toPlainText().endsWith("0"))
)
{
qDebug() << "Integer entered";
}
else
{
qDebug() << "Non-integer entered";
}
}
但是,当我从on_plainTextEdit_textChanged()
插槽调用此函数时,出现错误:
undefined reference to validateText(QPlainTextEdit*)
目前,我在textchanged slot中有这段代码:
void Options::on_plainTextEdit_textChanged()
{
validateText(qobject_cast<QPlainTextEdit*>(qApp->widgetAt(180,30)));
}
正如您所看到的,我正在尝试获取对象本身的引用并将其传递给函数,但我遇到了这个问题。我做错了什么,或者是否有更简单的方法将小部件对象传递给Qt中的函数?
答案 0 :(得分:3)
好的,正如Daniel在评论中所建议的那样,我添加了一个验证器类并修复了我遇到的问题。以下是将来遇到同样问题的人的代码。
<强> validator.cpp 强>
...
Validator::Validator(QPlainTextEdit *textEdit)
{
this->myWidget = textEdit;
}
void Validator::validateText ()
{
if ( (myWidget->toPlainText().endsWith("1")) ||
(myWidget->toPlainText().endsWith("2")) ||
(myWidget->toPlainText().endsWith("3")) ||
(myWidget->toPlainText().endsWith("4")) ||
(myWidget->toPlainText().endsWith("5")) ||
(myWidget->toPlainText().endsWith("6")) ||
(myWidget->toPlainText().endsWith("7")) ||
(myWidget->toPlainText().endsWith("8")) ||
(myWidget->toPlainText().endsWith("9")) ||
(myWidget->toPlainText().endsWith("0"))
)
{
qDebug() << "Integer entered";
}
else
{
qDebug() << "Non-integer entered";
}
}
函数调用
void Options::on_plainTextEdit_textChanged()
{
Validator* val = new Validator(ui->plainTextEdit);
val->validateText();
}
这完全省略了从QWidget转换为QPlainTextEdit或任何废话的需要。