![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
Dronte |
![]()
Сообщение
#1
|
Студент ![]() Группа: Новичок Сообщений: 10 Регистрация: 30.7.2011 Пользователь №: 2770 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
class XoWidget : public QPushButton,QFrame
На XoWidget хочется нарисовать QPainterом:
Как нарисовать? Да, сорри, первое - это код, а второе - это ошибка. |
|
|
![]() |
hoRUS |
![]()
Сообщение
#2
|
Студент ![]() Группа: Участник Сообщений: 30 Регистрация: 10.7.2008 Из: Москва Пользователь №: 231 Спасибо сказали: 5 раз(а) Репутация: ![]() ![]() ![]() |
чтоб у виджета была рамка и сигнал pressed. Наследоваться от QFrame. Переопределить обработчики событий void mousePressEvent(QMouseEvent*); void mouseReleaseEvent(QMouseEvent*); void keyPressEvent(QKeyEvent*); void keyReleaseEvent (QKeyEvent*); и др. Например, если нужно, чтоб сигнал генерировался именно при нажатии мыши, можно сделать примерно так:
Но у сигнала clicked() кнопки более сложное поведение, он генерируется при нажатии и отпускании кнопки, если курсор остается на кнопке (и в некоторых других случаях, например, при нажатии на пробел, когда кнопка в фокусе). Т.ч. переопределять придется много событий. Как вариант, можно наследоваться от QPushButton и рисовать рамку руками QPainter'ом (все равно он используется). Выбирай, что проще и больше подходит. |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 30.6.2025, 3:21 |