Предположим, что у меня есть целая группа спинбокс, comboboxes и whatnot, где я могу установить всевозможные переменные для приложения; панель управления, если хотите. Один из них - QDoubleSpinBox *dec
, и, как правило, я использую его, как и должно быть, с десятичными знаками, но есть определенный комбинированный блок, который динамически включает/отключает некоторые спинбокс и comboboxes в зависимости от выбранной записи. Одно из таких изменений использует спинбокс dec
, который для этого времени должен быть ограничен целыми значениями и приращениями.Временно используйте целые числа с QDoubleSpinBox
Например, если dec
обычно имеет диапазон 0.00..99.99
и инкремент 0.1
, когда я выбираю что некоторые записям в контрольном комбинированном окне, мне нужно dec
быть на тот же диапазон (99
просто отлично), но излучающий только целые числа и могут быть изменены только целыми шагами (т.е. диапазон 0..99
, размер шага 1
).
В то время как я обнаружил (новичок в Qt), что я мог бы просто заставить setDecimals()
и setSingleStep()
для этой конкретной записи в выпадающем списке, то получается, что я должен использовать их для всех, чтобы иметь возможность отменить изменения, которые могут добавить к коду. Есть ли лучшее решение для этого?
Если ваш спин-бокс внезапно не позволяет удваивать больше, я бы сказал, что он концептуально отличается и должен быть заменен обычным полем для целых чисел. Если вам нужно, вы можете просто сосуществовать одновременно со спин-боксами, а затем при необходимости скрывать 'и()' и 'show()'. – oLen
Это не плохое решение, даже если ему все равно потребуется вызвать 'hide()' и 'show()' для всех других комбо-записей, чтобы вернуться (как и 'setDecimals()' и 'setSingleStep()'). Добавьте это как ответ, если никто не придет ни с чем другим, это лучшая реализация, по сравнению с моим уродливым взломом. –
Ваше решение с 'setDecimals' и' setSingleStep' просто и точно. Альтернативой является стекирование нескольких виджетов и синхронизация их значений: это больше работает. –