Pull to refresh

Comments 13

Красиво, но не очень реалистично. На реальном горящем светодиоде блики от внешнего освещения не видны. То есть блики нужны только для отображения выключенного состояния.
Согласен. Причем, как я упомянул в опусе, заметность блика сильно зависит от яркости, блики автоматически «гаснут» на «зажженном» варианте. Причем, этот эффект можно несложно регулировать одновременно с цветом. И я не очень стремился к фотореалистичности.

Спасибо, конечно, за статью, но кроме обычного рисования на Qt я тут ничего не увидел. Стоит хотя-бы вынести большинство констант в properties, чтобы можно было настраивать поведение через те же стили. А ещё лучше сделать все тоже самое средствами QtQuick, если нужна интерактивность. Там даже параллакс можно достаточно дёшево прикрутить.
Для эффективного рисования таких вещей всё-таки намного проще использовать картинки + qss + QToolButton (это на случай, если всякие hover эффекты хочется из коробки). В крайнем случае, если нужно эффективное масштабирование, можно взять svg, оверхеда практически не будет. Еще режут глаза статические переменные внутри методов.

Кроме рисования на Qt заголовок ничего и не обещал :-)
Нарисовать такую кнопку у меня получилось довольно быстро, около часа на всё, причем, следующий подобный виджет пошел еще быстрее. Найти описание рисования кнопки у меня вышло быстрее, чем найти готовые приличные картинки «бесплатно, без регистрации и СМС» — это к вопросу о SVG и готовых картинках. Стремиться к идеалу надо, конечно, другими путями, тут вариант «просто, но симпатично».

Ну да, тут вопрос в масштабах проекта. Если человек 20-30 его делают, то резко возрастает вероятность появления кучи велосипедов с перекрывающийся функциональностью. Я с таким сталкивался. Поэтому считаю, что если вы рассчитываете на реюзабельность виджета, то нужно делать его максимально продуманным и гибким. И крайне желательно, чтобы он реализовывал стандартные механизмы Qt по кастомизации, а именно поддержку стилей.
По поводу картинок — погуглите по запросу “fatcow icons”. Практически полностью покрывает потребности многих проектов.

За наводку на иконки — гран мерси, премного благодарен. Хотя по возможности предпочитаю рисовать что-то свое (если время остается).
Я конечно понимаю, что тут про принцип и подход к реализации.
Но если кому-то нужен светодиод без лишних велосипедов, то например в кедах есть /usr/include/kled.h.
Причем я его использовал еще как минимум 12 лет назад.
Кеды — это очень хорошо. ХРюша — похуже, но выбора нет. Под винду ничего приличного не нашел, оказалось быстрее сделать самому.
Когда есть исходники всегда можно их по-заимствовать kdelibs/kdeui/widgets/kled.cpp
Причем, виджет чистый, зависит только от qt.
Это я уже понял, спасибо за наводку. Просто кед под рукой нет, надо где-то
в сети искать.
А почему не использовать QML?
Честно сказать, он мне чисто субъективно не нравится. Предпочитаю обходиться без.
Полная аналогия с WPF, декларативная векторная графика, с моделью событий, и декларативной анимацией, оооочень сильная штука. На императивной модели создаия интерфейса и близко такого не сделать. Ваша задача решается там практически без кода.
Sign up to leave a comment.

Articles