Как правильно конвертировать QValidator * в QDoubleValidator * - PullRequest
1 голос
/ 16 января 2020

В этом фрагменте кода edit_sclratio является QLineEdit. Как мне использовать его валидатор в качестве QDoubleValidator без использования приведения старого стиля:

(QDoubleValidator*)_ui->edit_sclratio->validator() //This works fine

Но я хочу использовать правильное приведение типов и stati c, Dynami c, const и reinterpret cast т работа. Ошибка всегда в том, что она «отбрасывает квалификаторы».

QDoubleValidator* validator = static_cast<QDoubleValidator*>(_ui->edit_sclratio->validator());

1 Ответ

2 голосов
/ 16 января 2020

Ошибка всегда в том, что она «отбрасывает квалификаторы».

Здесь речь идет о const классификаторах.

QLineEdit::validator() возвращает a const QValidator*, поэтому вы должны привести его к const QDoubleValidator*.

Примечание : я предлагаю вам сформировать привычку использовать qobject_cast<> для классов, которые наследуют QObject (например, QValidator). Дополнительным преимуществом является возвращение nullptr, если вы пытаетесь привести к неправильному типу; это позволяет выполнять проверки ошибок во время выполнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...