crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> Не обрабатывается MousePressEvent
tehnar
  опции профиля:
сообщение 14.2.2014, 16:04
Сообщение #1


Новичок


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

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




Репутация:   0  


Решил в рамках ознакомления с Qt сделать что-нибудь простое, выбор пал на шашки. Класс шашки унаследован от QWidget, собственно, вот часть конструктора
Checker::Checker(QWidget *parent, int _x, int _y, int _type) :QWidget(parent)
{
    //...
    setGeometry(75 * x, 75 * y, 75, 75);
    show();
}


В ходе выполнения конструктора главной формы, шашки создаются, как дочерние элементы этой самой формы
checkers[j][i] = new Checker(this, j, i, 1);


Но почему-то программа не заходит в обработчик нажатия мышки по шашке, хотя, казалось бы, должен. В то же время, если абсолютно такой же обработчик сделать для формы, то все будет работать. Конечно, я могу сделать обработку нажатия мыши и для формы, но это никак не исправит непонимание причины проблемы, так что помогите, пожалуйста
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 14.2.2014, 19:18
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


Цитата(tehnar @ 14.2.2014, 18:04) *
Но почему-то программа не заходит в обработчик нажатия мышки по шашке
приведи код этого обработчика и то как ты его объявил в классе.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
tehnar
  опции профиля:
сообщение 14.2.2014, 19:32
Сообщение #3


Новичок


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

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




Репутация:   0  


Цитата(Litkevich Yuriy @ 14.2.2014, 20:18) *
Цитата(tehnar @ 14.2.2014, 18:04) *
Но почему-то программа не заходит в обработчик нажатия мышки по шашке
приведи код этого обработчика и то как ты его объявил в классе.


class Checker : public QWidget
{
public:
    int type, x, y, active;
    Checker(QWidget *parent, int _x, int _y, int _type);
    void paintEvent(QPaintEvent *event);
    void mousePressEvent(QMouseEvent *event);
};

void Checker::mousePressEvent(QMouseEvent *event)
{
    cerr << "mouse press" << endl;
}


Если заменить Checker:: на MainWindow:: и переместить объявление события в класс формы, то работать будет

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

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


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




RSS Текстовая версия Сейчас: 27.4.2024, 9:20