Предположим, у меня есть целая группа счетчиков, выпадающих списков и многого другого, где я могу устанавливать всевозможные переменные для приложения; панель управления, если хотите. Один из них — QDoubleSpinBox *dec
, и, как правило, я использую его как положено, с десятичными знаками, но есть некое поле со списком, которое динамически включает/отключает некоторые счетчики и поля со списком, в зависимости от выбранной записи. Одно из таких изменений использует счетчик dec
, который только на этот раз должен быть ограничен целыми значениями и приращениями.
Например, если dec
обычно имеет диапазон 0.00..99.99
, а приращение равно 0.1
, когда я выбираю эту определенную запись в управляющем поле со списком, мне нужно, чтобы dec
было в том же диапазоне (99
просто отлично), но выдавать только целые числа, и возможность изменения только с целочисленными шагами (т.е. диапазон 0..99
, размер шага 1
).
Хотя я обнаружил (новичок в Qt), что могу просто установить setDecimals()
и setSingleStep()
для этой конкретной записи в поле со списком, оказалось, что я должен использовать их для всех, чтобы иметь возможность отменить изменения, которые могут добавить к коду. Есть ли лучшее решение для этого?
hide()
иshow()
при необходимости. - person oLen   schedule 15.12.2016hide()
иshow()
для всех остальных комбинированных записей (точно так же, какsetDecimals()
иsetSingleStep()
). Добавьте это в качестве ответа, если никто не придет ни с чем другим, это лучшая реализация по сравнению с моим уродливым взломом. - person a concerned citizen   schedule 15.12.2016setDecimals
иsetSingleStep
простое и точное. Альтернативой является стек нескольких виджетов и синхронизация их значений: это намного больше работы. - person Kuba hasn't forgotten Monica   schedule 16.12.2016