Хорошо, это не скомпилировано, но должно работать в принципе, вы можете изменить внешний вид, позвонив по номеру editWidget->setProperty('isError',true)
или editWidget->setError(false)
class ErrorTextEdit : QLineEdit
{
Q_OBJECT
QPROPERTY(bool isError, READ isError, WRITE setError);
public:
ErrorTextEdit(QWidget* parent) : QLineEdit(parent), m_isError(false)
{
m_styleSheet = "" // see below
setStyleSheet(m_styleSheet);
}
void setError(bool val)
{
if (val != m_isError)
{
m_isError = val;
setStyleSheet(m_styleSheet);
}
}
bool isError() {return m_isError;}
private:
QString m_styleSheet;
bool m_isError;
}
для таблицы стилей
ErrorTextEdit[isError="false"]
{
optional ...
Style for textedit that is NOT an error
}
ErrorTextEdit[isError="true"]
{
background-color: #FF8A8A;
background-image: url(:/resources/warning.png);
background-position: right center;
background-repeat: no-repeat;
}
срок
[<property>="<value>"]
ограничивает применение таблицы стилей экземплярами класса, для которого <property>
имеет соответствующий <value>
, единственное предостережение в том, что стиль не изменен, когда свойство меняет свое значение, поэтому Таблица стилей должна быть повторно применена для фактического изменения внешнего вида виджета, см. Документация по таблице стилей -> Селектор свойств
Эта конструкция перемещает таблицу стилей в виджет, который ее использует, и делает переключение внутренним для виджета, виджет изменяется в соответствии с его состоянием.
Как правило, у вас есть несколько способов обработки неправильных вводов в вашей форме
a) наблюдайте за каждым изменением и обновляйте стиль соответствующим образом, для этого вы также сможете использовать QValidator
, но это отдельная тема, с помощью QValidator вы, вероятно, сможете полностью усвоить состояние одного QTextEdit и не нужно иметь дело с его действительностью извне
b) Делайте это в цикле отправки, который вы описали выше, всякий раз, когда пользователь нажимает на кнопку отправки, изменяет состояние правильных и неправильных полей
все зависит от структуры вашего приложения и вида