![]() |
|
![]() ![]() ![]() |
|
aspirin2003 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 111 Регистрация: 18.3.2007 Где: Саратов Репутация: нет Всего: нет |
Чтобы не создавать разные стили для кнопок, хочу использовать вместо них QLabel с различными картинками. Но у QLabel нет метода Click(), и поэтому я не знаю как быть.
Посоветуйте, что лучше сделать |
|||
|
||||
anatox91 |
|
|||
![]() программист-самоучка ![]() ![]() Профиль Группа: Участник Сообщений: 699 Регистрация: 12.1.2008 Где: ++Украина.Крым++ Репутация: нет Всего: 13 |
может быть это тебе нужно(кнопка будет плоской, как лейбл):
можешь еще просто унаследоваться от QPushButton и перерисовывать кнопку при нажатии, наведении курсора и т.п. вот примерчик(можешь перерисовать под свои нужды, заменить картинки, изменить размеры) Это сообщение отредактировал(а) anatox91 - 5.6.2008, 09:26 Присоединённый файл ( Кол-во скачиваний: 36 ) ![]() -------------------- The code is the design © Sony VAIO VGN-FW480J ![]() |
|||
|
||||
Elfebet |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 545 Регистрация: 15.5.2006 Где: Украина. Запорожь е. Репутация: 5 Всего: 14 |
не, вместо QPushButton юзай QToolButton, и вот ему сделай setRaise(true), ну и добавь картинку setIcon("картинка") - тогда будет выглядеть изначально как картинка, а при наведении мышой на кнопку..... лучше сам посмотри
![]() а вот на счет лейбла, не так уж и трудно отнаследоваться от QLabel и сделать сигнал clicked(); QLabelEx.h
QLabelEx.cpp
-------------------- Программист не должен всё знать... он должен знать где можно посмотреть |
||||
|
|||||
aspirin2003 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 111 Регистрация: 18.3.2007 Где: Саратов Репутация: нет Всего: нет |
Всем спасибо за ответы, подходы очень интересные
![]() |
|||
|
||||
aspirin2003 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 111 Регистрация: 18.3.2007 Где: Саратов Репутация: нет Всего: нет |
Только пока не пойму, почему то в Вашем коде не работают методы enterEvent и leaveEvent |
|||
|
||||
Elfebet |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 545 Регистрация: 15.5.2006 Где: Украина. Запорожь е. Репутация: 5 Всего: 14 |
такого быть не может, enterEvent и leaveEvent работают для всех виджетов
-------------------- Программист не должен всё знать... он должен знать где можно посмотреть |
|||
|
||||
anatox91 |
|
|||
![]() программист-самоучка ![]() ![]() Профиль Группа: Участник Сообщений: 699 Регистрация: 12.1.2008 Где: ++Украина.Крым++ Репутация: нет Всего: 13 |
aspirin2003, проще использовать приведенный мною готовый код, и только позаменять картинки и/или размеры
![]() -------------------- The code is the design © Sony VAIO VGN-FW480J ![]() |
|||
|
||||
aspirin2003 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 111 Регистрация: 18.3.2007 Где: Саратов Репутация: нет Всего: нет |
Вот попробовал Ваш код. Немного изменил класс TabButton и почему то вокруг кнопки получилась какая-то разноцветная фигня. Посмотрите, пожалуйста, почему так выходит Присоединённый файл ( Кол-во скачиваний: 12 ) ![]() |
|||
|
||||
aspirin2003 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 111 Регистрация: 18.3.2007 Где: Саратов Репутация: нет Всего: нет |
Посмотрите, тогда, пожалуйста, что не я сделал не так Присоединённый файл ( Кол-во скачиваний: 11 ) ![]() |
|||
|
||||
Elfebet |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 545 Регистрация: 15.5.2006 Где: Украина. Запорожь е. Репутация: 5 Всего: 14 |
Во первых в enterEvent и leaveEvent есть условие
а она в конструкторе изначально установлена в false, поэтому не выполняется (поставь в true) Во вторых ты в leaveEvent не присваиваеш картинку начального вида и в третьих
-------------------- Программист не должен всё знать... он должен знать где можно посмотреть |
||||||
|
|||||||
anatox91 |
|
|||
![]() программист-самоучка ![]() ![]() Профиль Группа: Участник Сообщений: 699 Регистрация: 12.1.2008 Где: ++Украина.Крым++ Репутация: нет Всего: 13 |
я не знаю, какие картинки ты подставлял вместо моих, я тебе показал лишь пример: в paintEvent всегда рисуем с QImage, а в остальных обработчиках событий рисуем на QImage(он в качестве контекста рисования) и перерисовываем с помощью repaint(); единственно что я забыл, это надо добавить еще такую функцию(размеры также можешь изменить под свои)
P.S.я вообще делал эту кнопочку для закрытия текущей вкладки в QTabWidget'e, но думаю идею поймешь -------------------- The code is the design © Sony VAIO VGN-FW480J ![]() |
|||
|
||||
aspirin2003 |
|
||||||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 111 Регистрация: 18.3.2007 Где: Саратов Репутация: нет Всего: нет |
Принцип я понял. Картинки, как было показано во вложении в моем ответе на Ваш предыдущий пост, я использовал именно Ваши, без каких-либо изменений. Я изменил по сути лишь класс TabButton, добавив в его конструктор 3 параметра QImage (чтобы не создавать каждый раз новый класс для каждой новой кнопки с разными картинками). После этого работа программы практически не изменилась за исключением того, что вокруг кнопки появилась какая то разноцветная фигня шириной около пикселя. Получается некрасиво.
Добавлено через 11 минут и 13 секунд
Так работает, спасибо |
||||||||
|
|||||||||
aspirin2003 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 111 Регистрация: 18.3.2007 Где: Саратов Репутация: нет Всего: нет |
И все-таки, anatox91, не могли бы Вы посмотреть, почему вокруг кнопки появляется цветной муар, когда немного изменяю конструктор TabButton? Сорри, уже наверное замучил, но все же ...
|
|||
|
||||
anatox91 |
|
|||
![]() программист-самоучка ![]() ![]() Профиль Группа: Участник Сообщений: 699 Регистрация: 12.1.2008 Где: ++Украина.Крым++ Репутация: нет Всего: 13 |
aspirin2003, та я и сам не пойму почему, это вряд ли из-за твоих изменений, у меня такое тоже было, я чуть в сторону переместил и стало почти незаметно...
-------------------- The code is the design © Sony VAIO VGN-FW480J ![]() |
|||
|
||||
aspirin2003 |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 111 Регистрация: 18.3.2007 Где: Саратов Репутация: нет Всего: нет |
Вот что у меня получилось в первом приближении:
TabButton.h
TabButton.cpp
Теперь встал вопрос - как вывести на кнопку текст? Текст в конструктор передается, но на кнопке его почему-то нет. Понятно, что это можно сделать с помощью QPainter, но в таком случае не получится изменить текст на уже созданной кнопке, а это может понадобиться. Это сообщение отредактировал(а) aspirin2003 - 13.6.2008, 21:00 |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |