crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

Dronte
  опции профиля:
сообщение 5.9.2011, 20:15
Сообщение #1


Студент
*

Группа: Новичок
Сообщений: 10
Регистрация: 30.7.2011
Пользователь №: 2770

Спасибо сказали: 0 раз(а)




Репутация:   0  


class XoWidget : public QPushButton,QFrame


На XoWidget хочется нарисовать QPainterом:

    painter.begin(this);

‘QPaintDevice’ is an ambiguous base of ‘XoWidget’


Как нарисовать?

Да, сорри, первое - это код, а второе - это ошибка.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
hoRUS
  опции профиля:
сообщение 5.9.2011, 22:56
Сообщение #2


Студент
*

Группа: Участник
Сообщений: 30
Регистрация: 10.7.2008
Из: Москва
Пользователь №: 231

Спасибо сказали: 5 раз(а)




Репутация:   0  


Цитата(Dronte @ 5.9.2011, 22:20) *
чтоб у виджета была рамка и сигнал pressed.


Наследоваться от QFrame. Переопределить обработчики событий

void mousePressEvent(QMouseEvent*);
void mouseReleaseEvent(QMouseEvent*);
void keyPressEvent(QKeyEvent*);
void keyReleaseEvent (QKeyEvent*);
и др.

Например, если нужно, чтоб сигнал генерировался именно при нажатии мыши, можно сделать примерно так:

class XoWidget : public QFrame
{
       Q_OBJECT

public:
       ...

protected:
       void mousePressEvent(QMouseEvent*);

signals:
       void pressed();
      
       ...

};

void XoWidget::mousePressEvent(QMouseEvent*)
{
       emit pressed();
}


Но у сигнала clicked() кнопки более сложное поведение, он генерируется при нажатии и отпускании кнопки, если курсор остается на кнопке (и в некоторых других случаях, например, при нажатии на пробел, когда кнопка в фокусе). Т.ч. переопределять придется много событий.
Как вариант, можно наследоваться от QPushButton и рисовать рамку руками QPainter'ом (все равно он используется). Выбирай, что проще и больше подходит.












Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 30.6.2025, 3:21