Пост актуален для тех, кто хочет переделать штатные кнопки и использовать их под новые функции, изменив заводские пиктограммы на свои. В этом посту я не буду освещать вопрос изменения конструкции кнопок и реализацию подсветки в кнопках, которые штатно такой возможности не имели, об этом будет написано отдельно.
Предыстория
Те, кто давно следит за бортжурналом моей машины, уже в курсе, что в ней «перерисованы» практически все основные кнопки. В этот раз мне в руки попали две кнопки от KIA Sportage.
Полный размер
Оригинальные кнопки от KIA Sportage
Задача заключалась в том, чтобы изменить пиктограммы на этих кнопках.
Подготовка
В первую очередь каждую кнопку необходимо максимально разобрать. Для гравировки нужна лишь лицевая часть (фасад) кнопки. Кронштейн, светопроводящий элемент, внутренний механизм/плата — всё это будет только мешать при покраске, поэтому внимательно осматриваем кнопки и ищем способ их разобрать.
Полный размер
Фасады кнопок держатся на четырех защелках
Как видно на фотографии выше фасады кнопок держатся на четырех защелках каждая. Все четыре защелки нужно одновременно отжать и отделить фасад от кронштейна. Я для этого использовал две часовые шлицевые отвертки, которыми подцеплял сначала пару с одной стороны, немного приподнимал с этого края, чтобы пластиковые ушки вышли из зацепления, далее сохраняя натяг, чтобы ушки обратно не защелкнулись, со второй стороны так же подцеплял оставшиеся два ушка и за тем снимал сам фасад.
Полный размер
Разобранные кнопки
Следующим этапом пойдут замеры. Нам нужно точно знать, где должны размещаться новые пиктограммы, чтобы они правильно и равномерно подсвечивались.
Полный размер
Снимаем все необходимые размеры
Важно точно измерить все отступы и сами размеры заводской пиктограммы, чтобы новые пиктограммы гармонично вписались в оформление кнопок.
После этого можно шкурить фасад. На этом этапе нельзя косячить, т.к. это будет невозможно поправить, только заново переделать. Перед покраской пластика нужно полностью снять старый слой лака, краски и грунта. Подойдет шкурка с зерном 600 и 800. Шкурить лучше всего под струёй теплой воды, чтобы поверхность получилась гладкой без царапин и задиров.
Полный размер
Отшкуренные фасады
Результат на фотографии выше. Теперь осталось обезжирить поверхность, снять пыль и можно приступать к покраске.
Полный размер
Медицинские спиртовые салфетки
Обезжиривать лучше спиртом или обезжиривающим растворителем, бензин и керосин оставляют бензольную пленку и разводы, что ни есть хорошо при покраске и прожиге. Мне было удобнее всего пользоваться обычными медицинскими спиртовыми салфетками для инъекций, которые продаются почти в каждой аптеке по ~30 рублей за упаковку (в упаковке обычно 10-15 салфеток).
Теперь необходимо избавиться от пыли. Для этого сначала вокруг покрасочной зоны необходимо распылить воду, чтобы прибить летающую пыль. Избавиться от постоянно налипающей пыли можно с помощью антистатической салфетки, а можно с помощью малярного (бумажного) скотча.
Полный размер
Малярный скотч
Я использую малярный скотч, легкими и быстрыми движениями приклеивая и срывая скотч с поверхности. Таким образом вся пыль остается на липкой поверхности скотча. Антистатические салфетки мне не понравились, — есть ощущение, что после них на поверхности остается полимерный слой в виде разводов. После высыхания можно переходить к покраске.
Покраска
Какой тип краски выбрать? Видов краски два — алкидная и акриловая. Алкидная считается устаревшей, хотя у неё есть свои преимущества. К алкидным краскам относятся составы, изготовленные с применением многоатомных спиртов и кислот. Пленкообразующими веществами этих эмалей являются алкидная смола, олифа, масло и прочие. Акриловыми считаются водно-дисперсионные краски на основе полимерных веществ. Состав может корректироваться добавлением воды, дополнительно окрашиваться пигментными пастами. Обладают хорошей устойчивостью к влаге. Алкидную поверхность приходится обновлять ежегодно, так как за это время она успевает утратить не только презентабельный вид, но и защитные свойства. Вызвано это тем, что кислород и солнечный ультрафиолет влияют таким образом, что верхний слой, затвердев, начинает истончаться, становится хрупким, покрывается трещинами и разрушается. Но стоит заметить, что алкидная смола застывает в процессе окисления, и уже через несколько дней может легко переносить серьезные механические и природные нагрузки. Акриловая эмаль не приобретает желтого оттенка, не теряет глянца под воздействием солнечных лучей, так как полимерная эмульсия, являющаяся связующим веществом, не вступает в химическую реакцию с кислородом и, соответственно, не поддается окислению, однако окончательное формирование акриловой пленки происходит в течение месяца. Это следует учитывать при процессе высыхания. Еще не затвердевшее, податливое покрытие следует беречь от деформирующих нагрузок, царапанья и загрязнений. Зато полностью высохнув, акриловая пленка отлично справляется с декоративными и защитными функциями. Алкидные краски имеют значительное преимущество перед своими акриловыми собратьями. Первые хоть и недолговечные, зато цвета, оттенки и полутона у них ярче, сочнее и разнообразнее. Тем не менее я рекомендую пользоваться акриловыми красками.
Я традиционно пользуюсь акриловыми грунтом, краской и лаком Motip. Пожалуй, это единственный производитель лакокрасочной продукции, который за последние 5 лет не ухудшил свою технологию. Грунтов есть два вида — прозрачный по пластику Plastic Primer и черный по металлу Primer. По личному опыту скажу, что грунт по пластику ни чем не лучше грунта по металлу, а стоит в два раза дороже, поэтому брать выгоднее грунт по металлу. Цветов бывает три — черный, серый и белый. Я использую только черный в силу личных вкусовых пристрастий.
Технология покраски перед гравировкой проста:
1. Кладем тонкий стой лака. Лак должен ложиться ровно и равномерно распределяться. Не должно быть шагрени, слой лака должен быть такой толщины, чтобы он мог равномерно растечься, но не создавались подтеки.
Если на лак налипла пыль или попала грязь, то необходимо снова вышкурить поверхность в ноль.
Лакировка
Лакировка нужна для того, чтобы лазер срезал только верхний слой краски и грунта, но не начал жечь сам пластик, т.е. проще говоря лак выступает защитным слоем между лазером и пластиком фасада кнопки.
Полный размер
Результат лакировки
После лакировки фасад должен просохнуть хотя бы полчаса при комнатной температуре. После этого можно наносить грунт.
2. Кладем первый слой грунта. Не пытайтесь закрасить всю поверхность сразу, нет ничего страшного в том, что где-то будет проглядывать пластик. Грунт должен быть положен равномерно без переливов.
Грунтование
После покраски необходимы 2 часа сушки при комнатной температуре (18-20 градусов) в сухом помещении. Ни в коем случае не красьте во время дождя или на улице — грунт будет плохо держаться и после высыхания пойдет пузырями. Как грунт подсохнет, поверхность станет не сырой, а шероховатой и матовой.
Полный размер
Высохший грунт
Далее можно класть второй слой грунта. Теперь нужна сплошная закраска без переливов. Если появилась капля не пытайтесь её залить краской или как-то убрать — продолжайте окрашивать соседнюю поверхность, косяк устраним после высыхания.
После второго слоя снова два часа сушки. Спешить при покраске не куда, устранение косяков в случае поспешной ошибке займет значительно больше времени и сил. Косяки прошлой покраски аккуратно удаляем той же шкуркой, которой подготавливали поверхность. После исправления косяков выравниваем неровности грунта и снова обезжириваем и убираем пыль.
3. Теперь можно класть первый слой краски. Как и с первым слоем грунта не нужно спешить, нет цели всё залить краской. Аккуратно кладем тонким слоем без капель и переливов. Ждём 15 минут на отлип (понятие «на отлип» означает, что верхний поверхностный слой краски уже застыл и пыль к нему не пристает).
Нанесение краски
Кладём второй слой краски, как и в случае со вторым слоем грунта. Не исправляем косяки, просто даём высохнуть. Если косяков не было, то опять сушим 15 минут на отлип, если косяки есть, то ждём полного высыхания (хотя бы час) и исправляем как в случае с грунтом. Далее кладём последний слой краски равномерно без переливов, но полностью покрывая всю поверхность (не должно быть шагрени, слой краски должен быть такой толщины, чтобы он мог равномерно растечься, но не создавались подтеки).
После этого сушим сутки, даже высохшую поверхность ни чем не тыкаем, на ощупь не пробуем.
Полный размер
Окрашенные фасады
Окончательное формирование акриловой пленки происходит в течение месяца, поэтому ещё несколько дней после покраски поверхность нельзя подвергать механическому воздействию.
После полного высыхания краски можно переходить к гравировке.
Гравировка
В каждом более-менее крупном городе наверняка есть лазерные гравировочные центры. Интернет вам в помощь, ищите центр и звоните туда — вас будет интересовать услуга прожиг по окрашенному пластику.
Прежде, чем делать прожиг, нужно определиться с картинкой (пиктограммой), которую нужно нанести на фасад. В случае с кнопками от KIA Sportage это изображения подогрева руля и отключения переднего парктроника.
Полный размер
Изображения для кнопок
Отрисовывать пиктограммы можно где угодно, но конечный результат лучше делать в монохромном векторе (пакет CorelDraw). Из формата .cdr будет просто перевести в растровую графику в нужном разрешении. Например, лазерный гравер МиниМаркер-2 в качестве входного формата обрабатывает растровую графику в формате .bmp (точечный рисунок).
После подготовки необходимой пиктограммы можно приступать к процессу прожига.
Полный размер
Лазерный прожиг на окрашенной поверхности
Именно сейчас пригодятся снятые ранее размеры, т.к. по ним нужно точно выставить лазер, чтобы новая пиктограмма заняла правильное место на фасаде кнопки.
Для лазерного гравера МиниМаркер-2 параметра прожига должны быть следующие:
Power (мощность прожига): 20
Speed (скорость прожига): 450-600
Frequency (частота прожига): 20
Плотность прожига (разрешение): 500 dpi
Сам процесс прожига запечатлен на видео:
При таких параметрах необходимо сделать 3-4 прохода в зависимости от толщины краски/грунта.
Обратите внимание, что если вы уже получили выгравированное белое изображение, то все последующие проходы лазером будут сжигать лак (тот самый первый защитный слой), затемняя белую поверхность, а после выжигания лака начнут чернить кнопку, поэтому перебарщивать не стоит.
Теперь по желанию можно положить лак на кнопку (обратите внимание, что на заводских кнопках лака нет). Обычно кладется 3 стоя лака с 15-минутным промежутком. Лак должен ложиться ровно и равномерно распределяться. Не должно быть шагрени, каждый слой лака должен быть такой толщины, чтобы он мог равномерно растечься, но не создавались подтеки. Если на лак налипла пыль или попала грязь, то действуем как и с грунтом. После последнего слоя даём просохнуть пару суток, лак должен полностью высохнуть и улечься.
Финальная обработка
После окончания прожига и лакировки (по необходимости) останется почистить поверхность фасада с обратной стороны от красочной пыли. Для этого подойдет средство для снятия лака и обычная ватная палочка.
Полный размер
Набор для очистки
Т.к. покраска происходит воздушно-капельным путем, то частицы краски и грунта неизбежно попадают через щели и отверстия на обратную сторону фасада. Для лучшего светопропускания обратную сторону фасада необходимо очистить от нежелательной красочной пыли.
Полный размер
Очистка обратной стороны фасадов кнопок
Ватная палочка для это подходит идеально. Один конец смачиваем в растворителе (средстве для снятия лака), а второй конец оставляем сухим. Смоченным концом отмываем пластик, а сухим — вытираем насухо.
Полный размер
До и после отмывания пластика
После этого остается только собрать кнопки в исходное состояние и пользоваться.
Итог
Зачастую, попасть в тон заводской краски практически не реально. На заводе используют порошковую краску, которую запекают. Из-за этого она становится более матовая и шероховатая нежели акриловая краска, а оттенок черного смещается в сторону серого спектра. Именно поэтому рядом стоящие кнопки лучше перекрашивать все вместе, так выйдет гармоничнее и аккуратнее.
Полный размер
Новый вид кнопок
Спасибо за внимание! Следите за обновлениями, впереди ещё много интересного!
Изменение пиктограмм на кнопках Шевроле Нива
Некоторые кнопки на панели приборов Шевроле Нива у меня изначально никак не были задействованы. Однако в процессе эксплуатации я установил сюда кое-какие девайсы, вот их управления я и присоединил к имеющимся кнопками. Вроде бы все в порядке, вот только пиктограмма не совпадает. Пиктограмма — это рисунок на кнопке, которая подсвечивается при включении габаритов.
Можно было бы ничего не менять, ну или хотя бы купить кнопку с соответствующим рисунком и засунуть ее вместо той, что раньше была, так ведь нет, меня такой вариант не устраивает, я решил экономить по полной программе и при этом получить полноценный качественный тюнинг. В общем буду исправлять пиктограмму на старых кнопках, вот только как это можно сделать? Ну что же, я вас научу это делать.
- {banner_ssylka-v-tekste}
Вытаскиваем кнопку со штатного места и хорошенько обрабатываем ее мелкой наждачкой, пока не сойдет черная краска. В результате у нас получается кнопка белого цвета. Кстати, чистить нужно не всю кнопку, а только тот участок, который будет подсвечиваться. Как только стерли краску берете карандаш твердо-мягкий или просто мягкий и рисуете нужный рисунок.
Потом берем толстую иголку либо тонкий гвоздь, ножку которого нужно будет обработать напильником, и начинаем гравировать пиктограмму. Гравировать нужно не очень сильно, достаточно сделать так, чтобы остался еле заметный след, не более того. Потом берем ацетон или другой растворитель, обезжириваем плоскость и перекрашиваем ее краской. Лично я использовал краску для бампером. Красим тщательно, но при этом слой должен быть тонким.
Ждем 20 минут, за это время краска немного высохнет, а вот сам пластик клавиши растворится и станет мягким. Берем кнопку, потом прикладываем ее к гравировке и несильно нажимаем. Потом еще раз красим. Теперь толщина краски нам играет на руку. Углубляем след очередным выскребыванием.
Ну что же, кнопка готова, нужный рисунок нанесен, можете установить ее на место и проверить, как работает подсвечивание кнопки. Вот так я много кнопок изменил, на некоторых пиктограмму корректировал просто так.
Показать темы за: |
Поле сортировки |
Направление |
Автор | Сообщение | |||
---|---|---|---|---|
|
Заголовок сообщения: Изменение пиктограмм на кнопках Добавлено: 14 ноя 2011, 12:37 |
|||
804 Автор темы
Блог: Просмотр записи (0)
|
не мое. Оригинал тут http://www.uazpatriot.ru/forum/knopki-v … 16093.html Цитата: Берем кнопку и счищаем с нее не грубой шкуркой черную краску. Получаем белую кнопку. Счищайте не всю кнопку, а там где будет новый значок. Стерли? Рисуем карандашом (ТМ или М) нужную пиктограмку. Далее берем иголку, лучше толстую, обувную (или тонкий гвоздь, ножку которого напильником, делаем как скребок) и аккуратно гравируем наш рисунок. Не сильно, но так чтобы остался след. Теперь ацетоном обезжириваем поверхность и красим ее краской для бамперов (пр-ва BODY). Слой нанести нужно небольшой, не усердствуйте. После 10-15 минутного высыхания, краска еще не окончательно затвердела, а вот пластик кнопки немного растворился и стал мягким. Берем нашу кнопку и по видимым на свет очертанием первичной «гравировки» сильным нажатием *у нас культурный форум* рисунок. Опять красим. Теперь толщина краски нам помогает – углубляемся в кнопку еще одним *у нас культурный форум*. Вот и все – кнопка готова.
|
|||
Вернуться к началу |
|
|||
morlok |
Заголовок сообщения: Добавлено: 14 ноя 2011, 18:02 |
||
24
Блог: Просмотр записи (0)
|
А если после выскребания пластилином замазать, потом обезжирить и после двойной поскраски снять платили? _________________ |
||
Вернуться к началу |
|
||
Spiridonich |
Заголовок сообщения: Добавлено: 14 ноя 2011, 18:04 |
804 Автор темы
Блог: Просмотр записи (0)
|
morlok, понятия не имею : мопед не мой, я просто перепостил ответ на давно интересовавший меня вопрос. |
Вернуться к началу |
|
Сергей544 |
Заголовок сообщения: Добавлено: 14 ноя 2011, 18:49 |
||
7
Блог: Просмотр записи (0)
|
калхоз : _________________ |
||
Вернуться к началу |
|
||
Arbuzzz |
Заголовок сообщения: Добавлено: 14 ноя 2011, 19:04 |
810
Блог: Просмотр записи (0)
|
Я на шелкуху отдам… _________________ |
Вернуться к началу |
|
Spiridonich |
Заголовок сообщения: Добавлено: 14 ноя 2011, 19:18 |
804 Автор темы
Блог: Просмотр записи (0)
|
Сергей544 писал(а): чем «родные» кнопки не устраивают? ну если появятся «родные» кнопки включения рабочего, диагонального, заднего света люстры, дополнительного дальнего, принудительного включения вентилятора, включения электропомпы, и т.п. я с удовольствием их поставлю. А пока будем колхозить, а то в обилие кнопочек с пиктограммами ПТФ я уже начинаю путаться. |
Вернуться к началу |
|
Spiridonich |
Заголовок сообщения: Добавлено: 14 ноя 2011, 19:26 |
804 Автор темы
Блог: Просмотр записи (0)
|
Arbuzzz писал(а): Я на шелкуху отдам… а там черным покроют? тут как бе антишелкография нужна, закрасить все лишнее, акромя просвечивающейся картинки |
Вернуться к началу |
|
Arbuzzz |
Заголовок сообщения: Добавлено: 14 ноя 2011, 19:42 |
810
Блог: Просмотр записи (0)
|
Spiridonich, а почему нет? какая разница, закрашивать рисунок или все, кроме рисунка? : _________________ |
Вернуться к началу |
|
Сергей544 |
Заголовок сообщения: Добавлено: 14 ноя 2011, 19:45 |
||
7
Блог: Просмотр записи (0)
|
Spiridonich писал(а): …если появятся «родные» кнопки включения рабочего, диагонального, заднего света люстры, дополнительного дальнего, принудительного включения вентилятора, включения электропомпы… ну а в ювелирку отдать? там у людей рука твёрдая — нарисуют чо хочешь : _________________ |
||
Вернуться к началу |
|
||
Spiridonich |
Заголовок сообщения: Добавлено: 14 ноя 2011, 20:21 |
804 Автор темы
Блог: Просмотр записи (0)
|
Сергей544, в ювелирке думаю дороговато выйдет, а вот шелкография это тема. Люстру никогда и не разрешали : Она для бездорожья нужна, там гибонов нет. К тому же кроме нее у меня еще и другие потребители есть. |
Вернуться к началу |
|
I’m trying to change the Icon of a QpushButton on hover and pressed, I’m using QtDesigner with stylesheets.
I tried this
QpushButton{
qproperty-icon:url(:/images/start.png);
}
QPushButton:hover
{
qproperty-icon:url(:/images/start_hov.png);
}
But it doesn’t work.
I tried setting it from QtDesigner Menu
but it didn’t work as well.
asked Oct 29, 2016 at 11:46
Unfortunately, it is a bug of Qt which is still not fixed. There’s a workaround suggestion within the comments to that bug, basically you could use empty qproperty-icon
and reserve the space necessary for it while actually changing background-image
property instead:
QPushButton {
qproperty-icon: url(" "); /* empty image */
qproperty-iconSize: 16px 16px; /* space for the background image */
background-image: url(":/images/start.png");
background-repeat: no-repeat;
}
QPushButton:hover {
background-image: url(":/images/start_hov.png");
background-repeat: no-repeat;
}
But the end result looks… not very satisfactory really. You can get much better results if you use C++ to change the button’s icon at runtime, here’s a simple example using event filter:
#include <QObject>
#include <QPushButton>
#include <QEvent>
class ButtonHoverWatcher : public QObject
{
Q_OBJECT
public:
explicit ButtonHoverWatcher(QObject * parent = Q_NULLPTR);
virtual bool eventFilter(QObject * watched, QEvent * event) Q_DECL_OVERRIDE;
};
ButtonHoverWatcher::ButtonHoverWatcher(QObject * parent) :
QObject(parent)
{}
bool ButtonHoverWatcher::eventFilter(QObject * watched, QEvent * event)
{
QPushButton * button = qobject_cast<QPushButton*>(watched);
if (!button) {
return false;
}
if (event->type() == QEvent::Enter) {
// The push button is hovered by mouse
button->setIcon(QIcon(":/images/start_hov.png"));
return true;
}
if (event->type() == QEvent::Leave){
// The push button is not hovered by mouse
button->setIcon(QIcon(":/images/start.png"));
return true;
}
return false;
}
Then somewhere in your code setting up the UI you do something like this:
ButtonHoverWatcher * watcher = new ButtonHoverWatcher(this);
ui->pushButton->installEventFilter(watcher);
And bingo — you get the button’s icon changing on hover and unhover!
answered Oct 29, 2016 at 19:32
DmitryDmitry
3,0332 gold badges20 silver badges32 bronze badges
2
After reading this article and encountering similar issues. This is my work around in c++ not using style sheet from designer.
1>I create Icons one for being pressed and one for normal. In your case we would address it as the hover condition.
2>Add the icons to the resource file.
3>Use the following code for reference…
Where Add_PB is a QPushButton.
Add_PB->setStyleSheet( "*{border-image: url(:/icons/maximize.bmp);}"
":pressed{ border-image: url(:/icons/maximize_pressed.bmp);}");
The key take away here is you can use setStyleSheet to set diffrent icons for different conditons. I couldnt get the above code to work until I used the * operator or «Universal Selector» in the CSS string.
Reference: http://doc.qt.io/qt-5/stylesheet-syntax.html
answered Nov 26, 2018 at 18:22
I maked it in designer, from ui_…h file:
QIcon icon;
icon.addFile(QStringLiteral(":/unpressed.png"), QSize(), QIcon::Normal, QIcon::Off);
icon.addFile(QStringLiteral(":/pressed.png"), QSize(), QIcon::Normal, QIcon::On);
pushButton->setIcon(icon);
answered Mar 7, 2018 at 12:46
deMaxdeMax
867 bronze badges
1
In c++ , we can achieve it using the following code:
ui->button->setStyleSheet("QPushButton{border-image : url(./default_Img.png);} QPushButton:hover{border-image : url(./hover_Img.png); }"
"QPushButton:focus{border-image : url(./focus_Img.png);}");
answered Aug 30, 2018 at 13:59
georgegeorge
3393 silver badges12 bronze badges
1
I know this is an old question, but I think it may still be useful.
To get a button with only an image showing by default, then a different image on hover, I tried having an icon set in the editor and playing around with the onSelected
, onActive
, etc. but naturally, it didn’t work.
What did work is inspired from @JosephFarrish and from @goerge so credit goes firstly to them. I decided to post my answer as a ‘tangible’ solution.
For the particular push button, I have 2 images:
- one shown by default
- and on for a hover effect
My solution for a specific QPushButton is:
QPushButton {
border-image: url(:/icons/ic-explore);
background-repeat: no-repeat;
width: 32px;
height: 32px;
}
QPushButton:hover {
border-image: url(:/icons/ic-explore-hover);
background-repeat: no-repeat;
}
as you can see, the ic-explore
and ic-explore-hover
are added to my resource file as shown below:
where the actual icons are in the root project folder, in a folder named icons. The prefix for the icons is given by :/icons/
and this coincidentally happens to be the same name as the icons
folder name.
Note with the CSS that I set the width and height of the QPushButton.
answered Aug 29, 2019 at 11:30
CybeXCybeX
1,9223 gold badges45 silver badges107 bronze badges
I think it’s worth mentioning that as of the time of posting this answer, the bug mentioned in the approved answer appears to have been fixed. I have the following stylesheet macro for my buttons. This makes the button icons change correctly when they are hovered over and pressed.
#define BUTTON_STYLESHEET_TEMPLATE(not_pressed, hovered, pressed) "QPushButton {"
"border-image: url(:icons/" not_pressed ");"
"background-repeat: no-repeat;"
"width: 65px;"
"height: 56px;"
"}"
"QPushButton:hover {"
"border-image: url(:icons/" hovered ");"
"}"
"QPushButton:pressed {"
"border-image: url(:icons/" pressed ");"
"}"
I applied this to each of my QPushButtons with the setStyleSheet function, passing the three different images for each state into the macro.
button.setStyleSheet(BUTTON_STYLESHEET_TEMPLATE("not_pressed.png", "hovered.png", "pressed.png"));
Hopefully this helps!
answered Jun 9, 2021 at 9:02
BenBen
862 silver badges5 bronze badges
I’m trying to change the Icon of a QpushButton on hover and pressed, I’m using QtDesigner with stylesheets.
I tried this
QpushButton{
qproperty-icon:url(:/images/start.png);
}
QPushButton:hover
{
qproperty-icon:url(:/images/start_hov.png);
}
But it doesn’t work.
I tried setting it from QtDesigner Menu
but it didn’t work as well.
asked Oct 29, 2016 at 11:46
Unfortunately, it is a bug of Qt which is still not fixed. There’s a workaround suggestion within the comments to that bug, basically you could use empty qproperty-icon
and reserve the space necessary for it while actually changing background-image
property instead:
QPushButton {
qproperty-icon: url(" "); /* empty image */
qproperty-iconSize: 16px 16px; /* space for the background image */
background-image: url(":/images/start.png");
background-repeat: no-repeat;
}
QPushButton:hover {
background-image: url(":/images/start_hov.png");
background-repeat: no-repeat;
}
But the end result looks… not very satisfactory really. You can get much better results if you use C++ to change the button’s icon at runtime, here’s a simple example using event filter:
#include <QObject>
#include <QPushButton>
#include <QEvent>
class ButtonHoverWatcher : public QObject
{
Q_OBJECT
public:
explicit ButtonHoverWatcher(QObject * parent = Q_NULLPTR);
virtual bool eventFilter(QObject * watched, QEvent * event) Q_DECL_OVERRIDE;
};
ButtonHoverWatcher::ButtonHoverWatcher(QObject * parent) :
QObject(parent)
{}
bool ButtonHoverWatcher::eventFilter(QObject * watched, QEvent * event)
{
QPushButton * button = qobject_cast<QPushButton*>(watched);
if (!button) {
return false;
}
if (event->type() == QEvent::Enter) {
// The push button is hovered by mouse
button->setIcon(QIcon(":/images/start_hov.png"));
return true;
}
if (event->type() == QEvent::Leave){
// The push button is not hovered by mouse
button->setIcon(QIcon(":/images/start.png"));
return true;
}
return false;
}
Then somewhere in your code setting up the UI you do something like this:
ButtonHoverWatcher * watcher = new ButtonHoverWatcher(this);
ui->pushButton->installEventFilter(watcher);
And bingo — you get the button’s icon changing on hover and unhover!
answered Oct 29, 2016 at 19:32
DmitryDmitry
3,0332 gold badges20 silver badges32 bronze badges
2
After reading this article and encountering similar issues. This is my work around in c++ not using style sheet from designer.
1>I create Icons one for being pressed and one for normal. In your case we would address it as the hover condition.
2>Add the icons to the resource file.
3>Use the following code for reference…
Where Add_PB is a QPushButton.
Add_PB->setStyleSheet( "*{border-image: url(:/icons/maximize.bmp);}"
":pressed{ border-image: url(:/icons/maximize_pressed.bmp);}");
The key take away here is you can use setStyleSheet to set diffrent icons for different conditons. I couldnt get the above code to work until I used the * operator or «Universal Selector» in the CSS string.
Reference: http://doc.qt.io/qt-5/stylesheet-syntax.html
answered Nov 26, 2018 at 18:22
I maked it in designer, from ui_…h file:
QIcon icon;
icon.addFile(QStringLiteral(":/unpressed.png"), QSize(), QIcon::Normal, QIcon::Off);
icon.addFile(QStringLiteral(":/pressed.png"), QSize(), QIcon::Normal, QIcon::On);
pushButton->setIcon(icon);
answered Mar 7, 2018 at 12:46
deMaxdeMax
867 bronze badges
1
In c++ , we can achieve it using the following code:
ui->button->setStyleSheet("QPushButton{border-image : url(./default_Img.png);} QPushButton:hover{border-image : url(./hover_Img.png); }"
"QPushButton:focus{border-image : url(./focus_Img.png);}");
answered Aug 30, 2018 at 13:59
georgegeorge
3393 silver badges12 bronze badges
1
I know this is an old question, but I think it may still be useful.
To get a button with only an image showing by default, then a different image on hover, I tried having an icon set in the editor and playing around with the onSelected
, onActive
, etc. but naturally, it didn’t work.
What did work is inspired from @JosephFarrish and from @goerge so credit goes firstly to them. I decided to post my answer as a ‘tangible’ solution.
For the particular push button, I have 2 images:
- one shown by default
- and on for a hover effect
My solution for a specific QPushButton is:
QPushButton {
border-image: url(:/icons/ic-explore);
background-repeat: no-repeat;
width: 32px;
height: 32px;
}
QPushButton:hover {
border-image: url(:/icons/ic-explore-hover);
background-repeat: no-repeat;
}
as you can see, the ic-explore
and ic-explore-hover
are added to my resource file as shown below:
where the actual icons are in the root project folder, in a folder named icons. The prefix for the icons is given by :/icons/
and this coincidentally happens to be the same name as the icons
folder name.
Note with the CSS that I set the width and height of the QPushButton.
answered Aug 29, 2019 at 11:30
CybeXCybeX
1,9223 gold badges45 silver badges107 bronze badges
I think it’s worth mentioning that as of the time of posting this answer, the bug mentioned in the approved answer appears to have been fixed. I have the following stylesheet macro for my buttons. This makes the button icons change correctly when they are hovered over and pressed.
#define BUTTON_STYLESHEET_TEMPLATE(not_pressed, hovered, pressed) "QPushButton {"
"border-image: url(:icons/" not_pressed ");"
"background-repeat: no-repeat;"
"width: 65px;"
"height: 56px;"
"}"
"QPushButton:hover {"
"border-image: url(:icons/" hovered ");"
"}"
"QPushButton:pressed {"
"border-image: url(:icons/" pressed ");"
"}"
I applied this to each of my QPushButtons with the setStyleSheet function, passing the three different images for each state into the macro.
button.setStyleSheet(BUTTON_STYLESHEET_TEMPLATE("not_pressed.png", "hovered.png", "pressed.png"));
Hopefully this helps!
answered Jun 9, 2021 at 9:02
BenBen
862 silver badges5 bronze badges
#1

ОФФЛАЙН
Fil
- Город:Украина, г. Днепропетровск
Отправлено 19 Август 2010 — 16:36
У меня стоит газовая установка. Переключатель газ-бензин — обычная китайская кнопочка. Есть у меня мысль взять родную кнопку, каким-то образом стереть с неё пиктограмку (которая обозначается функцию кнопки) и нанести новую пиктограмку, ну или надписи типа «GAZ», «BENZ». Естественно, чтобы подсветка кнопки оставалась функциональной. Кто нибудь делал подобные вещи и как?.
Спасибо.
—————————————-
C126 420SEC ’86
W123 300TD Turbodiesel ’82
W123 300D ’83 — продан
- Наверх
#2

ОФФЛАЙН
don606
don606
- Город:замкадом
-
Автомобиль:
W
Отправлено 19 Август 2010 — 16:45
газ в топку за ним же и переключатель…
W126 500sel 117.965
S210 300td 606.962
- Наверх
#3

ОФФЛАЙН
Fil
Fil
- Город:Украина, г. Днепропетровск
Отправлено 19 Август 2010 — 16:49
газ в топку
за ним же и переключатель…
Ну пусть это будет не газ, но вопрос остаётся в силе.
—————————————-
C126 420SEC ’86
W123 300TD Turbodiesel ’82
W123 300D ’83 — продан
- Наверх
#4

ОФФЛАЙН
Корнелий Шнапс
Корнелий Шнапс
- Город:ЮВАО г.Понаехавск.
-
Автомобиль:
заз 965
Отправлено 19 Август 2010 — 17:54
Оракал 070 + хороший режущий плоттер, ну и плоттерщик в придачу!
Реставрaция, фанерование, ламинировние
+7 916 249-7О99
- Наверх
#5

ОФФЛАЙН
smotrov
smotrov
- Город:Белгород
-
Автомобиль:
W124
Отправлено 20 Август 2010 — 14:51
не думаю что оракал хороший вариант. мелкие детали могут со временем отклеится! но есть другой вариант использовать инвертированно оракал и закрасить вокруг
Mercedes Benz 230 E (124.023), 91 г., KE Jetronic
WDB1240231B424978
M 102.982, 4МКПП
Распределитель Bosch — 0 438 101 026
ЭГД Bosch — 2 437 020 007
Потенциометр Bosch — 3 437 224 035
Расходомер Bosch — 0 438 121 043
- Наверх
#6

ОФФЛАЙН
Fil
Fil
- Город:Украина, г. Днепропетровск
Отправлено 21 Август 2010 — 16:07
Оракал 070 + хороший режущий плоттер, ну и плоттерщик в придачу!
Чёрный оракал, на котором плоттером вырезается сама пиктограмка? 070 — это самый тонкий?
—————————————-
C126 420SEC ’86
W123 300TD Turbodiesel ’82
W123 300D ’83 — продан
- Наверх
#7

ОФФЛАЙН
Корнелий Шнапс
Корнелий Шнапс
- Город:ЮВАО г.Понаехавск.
-
Автомобиль:
заз 965
Отправлено 22 Август 2010 — 10:38
ORACAL 641 , 070 это черный матовый.
То что на фото, 4 года и не отрывается. делал для пробы, ради эксперимента, да так и осталось.
Матовый оракал уже отполировался до блеска.
Режется кружок и пиктограмма, потом монтажкой переносится на кнопку.
Думать одно, длать другое!
Реставрaция, фанерование, ламинировние
+7 916 249-7О99
- Наверх
#8

ОФФЛАЙН
Cannibal Mad
Cannibal Mad
- Город:г. Лида, Беларусь
-
Автомобиль:
W126, W123
Мой гараж
Отправлено 24 Август 2010 — 11:14
ORACAL 641 , 070 это черный матовый.
То что на фото, 4 года и не отрывается. делал для пробы, ради эксперимента, да так и осталось.
Матовый оракал уже отполировался до блеска.
Режется кружок и пиктограмма, потом монтажкой переносится на кнопку.
ORACAL рулит… Если аккуратно обезжирить и приклеить, то через неделю зубами не оторвать. Вопрос только насколько мелкие детали необходимы на рисунке — некоторые мои проекты наш Jaguar плоттер так и не смог вырезать. Говорят что ещё лазером как-то вырезают — там могут всё что угодно сделать.
W123 240D — продан
W126, год хрен знает какой, похоже 1980, чёрный, мотор 606.962.
- Наверх
#9

ОФФЛАЙН
Корнелий Шнапс
Корнелий Шнапс
- Город:ЮВАО г.Понаехавск.
-
Автомобиль:
заз 965
Отправлено 24 Август 2010 — 11:18
ORACAL рулит… Если аккуратно обезжирить и приклеить, то через неделю зубами не оторвать. Вопрос только насколько мелкие детали необходимы на рисунке — некоторые мои проекты наш Jaguar плоттер так и не смог вырезать.
Мельче чем на фото? Резал сам на китайце. Главное настроить правильно, поставить новый нож и мин.скорость реза.
Я специально сделал на обогреве не стандартную спираль, а дымок, чтобы понять на сколько мелкие детали можно прорезать и неклеить без потерь.
если резать и клеить букву (черную на белый фон, то проблемы будут однозначно. но если делать прорезные детали в фоне, то все прекрасно получается.
Сообщение отредактировал Корнелий Шнапс: 24 Август 2010 — 11:22
Реставрaция, фанерование, ламинировние
+7 916 249-7О99
- Наверх
#10

ОФФЛАЙН
kit123
kit123
- Город:Москва, ЮВАО
-
Автомобиль:
W123
Отправлено 24 Август 2010 — 13:53
Если ты не в курсе, эти кружки с пиктограммами выталкиваются изнутри и могут быть заменены. Выглядят как крышечки.
W123 2.3E 102.985 K-jetronic МКПП-4 1983 чёрный. 2002-20015->>>>
Купить Мерседес может каждый, а содержать избранные.
Если человек хороший, то совершенно неважно, какого цвета у него «Мерседес».
- Наверх
#11

ОФФЛАЙН
Корнелий Шнапс
Корнелий Шнапс
- Город:ЮВАО г.Понаехавск.
-
Автомобиль:
заз 965
Отправлено 24 Август 2010 — 14:15
Если ты не в курсе, эти кружки с пиктограммами выталкиваются изнутри и могут быть заменены. Выглядят как крышечки.
Заменены на что? К чему этот пост?
Реставрaция, фанерование, ламинировние
+7 916 249-7О99
- Наверх
#12

ОФФЛАЙН
kit123
kit123
- Город:Москва, ЮВАО
-
Автомобиль:
W123
Отправлено 24 Август 2010 — 17:25
Заменены на что? К чему этот пост?
К тому, что эксперименты с ней могут проводиться будучи в снятом состоянии.
Ну а потёртые можно таким образом заменять. Может человек не в курсе.
W123 2.3E 102.985 K-jetronic МКПП-4 1983 чёрный. 2002-20015->>>>
Купить Мерседес может каждый, а содержать избранные.
Если человек хороший, то совершенно неважно, какого цвета у него «Мерседес».
- Наверх
#13

ОФФЛАЙН
Корнелий Шнапс
Корнелий Шнапс
- Город:ЮВАО г.Понаехавск.
-
Автомобиль:
заз 965
Отправлено 24 Август 2010 — 17:33
Так где ж их взять то, непотертые на замену?
Топикстартеру надо сделать несуществующую в природе кнопку.
Реставрaция, фанерование, ламинировние
+7 916 249-7О99
- Наверх
#14

ОФФЛАЙН
gafton
gafton
- Город:Russia
-
Автомобиль:
***
Отправлено 28 Август 2010 — 01:26
ORACAL 641 , 070 это черный матовый.
…
Режется кружок и пиктограмма, потом монтажкой переносится на кнопку.
…
Рисунок стеклоподъемника для плотера остался?
Хуже умных врагов — только хитрожопые друзья.
- Наверх
#15

ОФФЛАЙН
Sky Diver
Sky Diver
- Город:Петрозаводск
-
Автомобиль:
W201 М102 Pierburg 2EE
Отправлено 28 Август 2010 — 13:52
Мне вот тоже интересно, а где найти рисунки для плоттера для кнопочек? мне вот тоже надо пару кнопочек восстановить)
- Наверх
#16

ОФФЛАЙН
gafton
gafton
- Город:Russia
-
Автомобиль:
***
Отправлено 28 Август 2010 — 18:56
Как где? Ждем художника…
Хуже умных врагов — только хитрожопые друзья.
- Наверх
#17

ОФФЛАЙН
Tommy
Отправлено 29 Август 2010 — 04:00
http://s2.images.drive2.ru/car.photos/7800/000/000/018/06d/88cc6045a6288178-large.jpg
вот такую кнопку газ бензин поставить можно, как я понял оригинал
Mercedes benz W124 200CE ITALIEN 1992 102.963 KE Jetronic. 5ст мкпп. 717.412.
- Наверх
#18

ОФФЛАЙН
Роменция
Роменция
- Город:Москва
-
Автомобиль:
W124 320E
Отправлено 29 Август 2010 — 08:52
y MEH9 eIIIE beJIOMOP noD IIIAnKOu TOP4aJI
Я у мамы дурачок.
Очень понравилась кнопка [topic=» [url=»http://s2.images.drive2.ru/car.photos/7800/000/000/018/06d/88cc6045a6288178-large.jpg»»]http://s2.images.drive2.ru/car.photos/7800…large.jpg»[/url]]тыц[/topic]
W124|230E|M102.982|1987|серый|
W124|230E|M102.982|1987|чёрный|
W124|300E|M103.983|1987|чёрный|
W124|320E|M104.995|1987|чёрный
8-909-696-7-333 Роман
- Наверх
#19

ОФФЛАЙН
Fil
Fil
- Город:Украина, г. Днепропетровск
Отправлено 11 Сентябрь 2010 — 17:43
Топикстартеру надо сделать несуществующую в природе кнопку.
Совершенно верно!
—————————————-
C126 420SEC ’86
W123 300TD Turbodiesel ’82
W123 300D ’83 — продан
- Наверх
#20

ОФФЛАЙН
Fil
Fil
- Город:Украина, г. Днепропетровск
Отправлено 11 Сентябрь 2010 — 17:45
http://s2.images.drive2.ru/car.photos/7800/000/000/018/06d/88cc6045a6288178-large.jpg
вот такую кнопку газ бензин поставить можно, как я понял оригинал
Ух ты! Это на кабане кнопка? Никто номерок не подскажет?
—————————————-
C126 420SEC ’86
W123 300TD Turbodiesel ’82
W123 300D ’83 — продан
- Наверх
0 / 0 / 0 Регистрация: 27.04.2015 Сообщений: 18 |
|
1 |
|
Изменить значок на кнопке29.08.2017, 16:14. Показов 2736. Ответов 11
Здравствуйте.
__________________
0 |
6513 / 4646 / 1932 Регистрация: 02.02.2014 Сообщений: 12,478 |
|
29.08.2017, 18:44 |
2 |
0 |
0 / 0 / 0 Регистрация: 27.04.2015 Сообщений: 18 |
|
29.08.2017, 19:33 [ТС] |
3 |
Нет, это совсем не то. Все описанное в статье я понял и применяю. Но мне хочется изменить рисунок на кнопке. В Word 2003 есть встроенный малюсенький графический редактор, с помощью которого можно нарисовать что-то на кнопке. Вот подобное я ищу в 2016-м.
0 |
0 / 0 / 0 Регистрация: 27.04.2015 Сообщений: 18 |
|
29.08.2017, 19:47 [ТС] |
4 |
Вот например, такой значек у меня стоит на макросе, который заменяет английские буквы на русские. Миниатюры
0 |
6513 / 4646 / 1932 Регистрация: 02.02.2014 Сообщений: 12,478 |
|
29.08.2017, 20:28 |
5 |
0 |
0 / 0 / 0 Регистрация: 27.04.2015 Сообщений: 18 |
|
29.08.2017, 22:35 [ТС] |
6 |
Печально. Вместо вполне удобного и простейшего встроенного инструмента использовать внешнее приложение, требующее немалых дополнительных знаний, не имеющее внятной справки и не известно, полезное ли…
0 |
6513 / 4646 / 1932 Регистрация: 02.02.2014 Сообщений: 12,478 |
|
29.08.2017, 22:58 |
7 |
Уроки по изменению интерфейса: http://fluentui.blogspot.ru/
0 |
6513 / 4646 / 1932 Регистрация: 02.02.2014 Сообщений: 12,478 |
|
29.08.2017, 23:04 |
8 |
художник из меня никаковский
0 |
8924 / 4836 / 1885 Регистрация: 11.02.2013 Сообщений: 10,246 |
|
30.08.2017, 05:59 |
9 |
как вместо imageMso=»что-то нарисовано в наборе» Есть делегат getImage, в котором можно прописать любую логику по добавлению своего изображения.
требующее немалых дополнительных знаний Ну не таких уж немалых, но почитать придётся
не имеющее внятной справки Можно написать Максиму — автору программы, чтобы добавил справку
не известно, полезное ли… Архиполезное. Проверено. Не уроки, но делился найденным здесь: http://customribbonui.blogspot.com/ Есть и книжка. Там рассматривается 2007 офис, в котором нет backstage, но принципы работы помогает уяснить Добавлено через 8 минут
1 |
0 / 0 / 0 Регистрация: 27.04.2015 Сообщений: 18 |
|
30.08.2017, 14:30 [ТС] |
10 |
Спасибо всем ответившим. Понял, что придется разбираться с этой программой.
0 |
8924 / 4836 / 1885 Регистрация: 11.02.2013 Сообщений: 10,246 |
|
31.08.2017, 07:45 |
11 |
Куда помещать картинку? В шаблон, в котором разрабатываешь интерфейс
0 |
0 / 0 / 0 Регистрация: 27.04.2015 Сообщений: 18 |
|
31.08.2017, 18:55 [ТС] |
12 |
То, что картинку надо поместить в шаблон понятно. Вопрос только в том, как это сделать?
0 |