У меня есть QComboBox
с валидатора, связанные с ним:Как проверить, является ли значение виджета «приемлемым»?
QComboBox* cb = new QComboBox;
// ...
cb->setValidator(new QDoubleValidator(0.0, 100.0, 2, this));
Этот виджет подключается к слоту, который запускается на выполнение, когда введенное значение изменяется (currentTextChanged()
).
connect(cb, SIGNAL(currentTextChanged(QString)),
this, SLOT(onTextChanged(QString)));
В этой конфигурации onTextChanged()
выполняется, когда валидатор возвращает Acceptable
или Intermediate
. Как я могу выполнить слот только тогда, когда введенное значение действительно действительно (Acceptable
). Или, альтернативно, как проверить состояние проверки в слоте onTextChanged()
? (Как ни странно, я заметил, что cb->validator()
, кажется, всегда возвращают nullptr
.)
«Я заметил, что le-> validator() см. ms всегда возвращать nullptr "le или cb? Вы также можете сохранить указатель валидатора в переменной-члене. –
@FrankOsterfeld Вопрос исправлен! – mimo
Попробуйте установить родительский элемент 'QDoubleValidator' в' QComboBox cb' вместо 'this'. – RedX