Russian Qt Forum
Сентябрь 30, 2024, 22:22 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Круглая кнопка через OpenGL?  (Прочитано 5015 раз)
SektorCT
Частый гость
***
Offline Offline

Сообщений: 229


Просмотр профиля
« : Февраль 28, 2016, 12:01 »

Всем привет.
Надеюсь на совет по моей проблемме.
нужно в QT приложении создать круглый таймер, то есть типа круглой кнопки края которйо имеют какую то заданную толщину.
Этот край имеет цвет. Мы задаем какое то время и оно начинает сменой одного цвета на другйо отсчитывать время. Так же с внутренней стороны имеются засечки как на обычных чисах.
Внутри этого таймера имеется уже отображение времени обычными цифрами. Так же этот таймер имеет свойство нажатия кнопки, нажали и отсчет остановился.
Вопрос, можно ли создать такой таймер путем QT или все таки это нужно рисовтаь полностью через OpenGL?
Просьба, те кто сталкивался с чем то подобным или имеется информация, поделитесь пожалуйста.

P.S. пробвоал обычную QPushButton сделать круглой через QRegion(*rect,QRegion::Ellipse) но он убирает активные области в углах кнопки, но по сути кнопка так и остается прямоугольной края которой невидны.
Записан
Bepec
Гость
« Ответ #1 : Февраль 28, 2016, 16:42 »

Берём математику, получаем формулу попадания в круг. Наследуемся от кнопки. Рисуем на основании данных круг, в зависимости от времени рисуем кромку и рисочки внутри. Так же рисуем три состояния от нажатия кнопки. Финита?
Записан
SektorCT
Частый гость
***
Offline Offline

Сообщений: 229


Просмотр профиля
« Ответ #2 : Февраль 28, 2016, 17:38 »

Берём математику, получаем формулу попадания в круг. Наследуемся от кнопки. Рисуем на основании данных круг, в зависимости от времени рисуем кромку и рисочки внутри. Так же рисуем три состояния от нажатия кнопки. Финита?

Благодарю за информацию. Только она слишком поверхносна. У меня по сравнению с вами как вижу опыта на много меньше. Могли бы по виджетам немного поподробнее обьяснить?
Записан
Bepec
Гость
« Ответ #3 : Февраль 28, 2016, 17:59 »

Смотря что именно вам неясно.
Рисование происходит в функции paintEvent, отслеживание нажатие в ф-циях mousePressEvent и mouseReleaseEvent.
Задавайте вопросы, отвечу в мере своих сил.
Записан
Fat-Zer
Гость
« Ответ #4 : Февраль 28, 2016, 21:31 »

отслеживание нажатие в ф-циях mousePressEvent и mouseReleaseEvent.
поправлю, сюда скорей всего лезть не придётся, там QAbstractButton делает всё, а будет достаточно hitButton().
Записан
SektorCT
Частый гость
***
Offline Offline

Сообщений: 229


Просмотр профиля
« Ответ #5 : Февраль 29, 2016, 13:16 »

Смотря что именно вам неясно.
Рисование происходит в функции paintEvent, отслеживание нажатие в ф-циях mousePressEvent и mouseReleaseEvent.
Задавайте вопросы, отвечу в мере своих сил.

Попробую сейчас обьяснить.
Я не совсем понимаю что будет за обьект на котором края будут по цвету перерисовыватся по времени. и то что в центре показывается время и при этом это все идет как кнопка мне тоже непонятно(
Посоветовали что нужно просто виджет сделать круглым, потмо в центр его засунуть кнопку. Но будет ли это все работать как цельынй обьект? Наверное надо для этого все в один класс запихать. Только вот не знаю пока с чего и начинать потому что кто то говорит что это будет работать а кто то говорит что не будет и надо по другому, а как непонятно.
Как писал я, опыта очень мало и не знаю с чем работать(.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #6 : Февраль 29, 2016, 15:04 »

OpenGL здесь совершенно ни при чем. Просто наследник QPushButton с перекрытыми paintEvent и hitButton, Напр на OSX кнопки закругленные и если нажать "в уголок" - ничего не произойдет. В общем, Вы напрасно терзаетесь в сомнениях  Улыбающийся
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.045 секунд. Запросов: 23.