我對Qt相當陌生,如果有人能幫助我解決這個問題,我將不勝感激。 我正在使用Qt Creator並創建了一個帶有PlainTextEdit
的表單。我正在嘗試使用if語句來驗證在此文本框中輸入的文本。我做了類似下面的如何將小部件對象傳遞給Qt中的函數?
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插槽至今:
void Options::on_plainTextEdit_textChanged()
{
validateText(qobject_cast<QPlainTextEdit*>(qApp->widgetAt(180,30)));
}
正如你可以看到我想獲得對該對象本身的引用並將其傳遞給函數,但我遇到了這個問題。我做錯了什麼,或者有更容易的方式將一個小部件對象傳遞給Qt中的函數?
我從來沒有使用'qobject_cast',但我懷疑它不適用於指針。你有嘗試過使用'static_cast'嗎? –
另一種方法是使validateText函數成爲驗證器類的成員函數。驗證器類可以在其構造函數中獲取指向QPlainTextEdit的指針(並將該指針存儲在成員變量中),並設置信號和插槽的所有必要連接。 –
是的,我嘗試'static_cast',但我仍然得到相同的錯誤 – Dohz