crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
kolesnle
  опции профиля:
сообщение 12.6.2013, 10:56
Сообщение #1


Новичок


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

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




Репутация:   0  


Вот я делаю так:
graphicsscene.h
#ifndef GRAPHICSSCENE_H
#define GRAPHICSSCENE_H
#include <QGraphicsScene>
#include <QDebug>
class GraphicsScene : public QGraphicsScene
{
    Q_OBJECT
public:
    explicit GraphicsScene(QObject *parent = 0);
    virtual ~GraphicsScene();
protected:
    void mousePressEvent();
    void mouseDoubleClickEvent();
    void mouseMoveEvent();
    void mouseReleaseEvent();
signals:
    void pressed();
    void doubleClicked();
    void mouseMoved();
    void released();
public slots:
};
#endif // GRAPHICSSCENE_H

graphicsscene.cpp
#include "graphicsscene.h"
GraphicsScene::GraphicsScene(QObject *parent) :
    QGraphicsScene(parent)
{
}
void GraphicsScene::mousePressEvent()
{
    qDebug() << "mouse pressed";
    emit pressed();
}
void GraphicsScene::mouseDoubleClickEvent()
{
    qDebug() << "mouse double clicked";
    emit doubleClicked();
}
void GraphicsScene::mouseMoveEvent()
{
    qDebug() << "mouse moved";
    emit mouseMoved();
}
void GraphicsScene::mouseReleaseEvent()
{
    qDebug() << "mouse relaeased";
    emit released();
}

Но когда я нажимаю по graphicsView(сцену установил) в debug не выводится "mouse pressed". Я подозреваю, что у меня что-то не то с головой, объясните, пожалуйста, как правильно?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kolesnle
  опции профиля:
сообщение 12.6.2013, 12:45
Сообщение #2


Новичок


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

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




Репутация:   0  


решено
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 12.6.2013, 14:42
Сообщение #3


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

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

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




Репутация:   94  


Цитата(kolesnle @ 12.6.2013, 14:45) *
решено
напиши как, может кому-то пригодится
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kolesnle
  опции профиля:
сообщение 12.6.2013, 18:16
Сообщение #4


Новичок


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

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




Репутация:   0  


нужно было писать не
    void mousePressEvent();
    void mouseDoubleClickEvent();
    void mouseMoveEvent();
    void mouseReleaseEvent();

а
    void mousePressEvent(QGraphicsSceneMouseEvent*);
    void mouseDoubleClickEvent(QGraphicsSceneMouseEvent*);
    void mouseMoveEvent(QGraphicsSceneMouseEvent*);
    void mouseReleaseEvent(QGraphicsSceneMouseEvent*);

:rolleyes:
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 12.6.2013, 19:05
Сообщение #5


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

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

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




Репутация:   94  


Если в базовом классе есть метод
int foo(int a)
, то чтобы его переопределить в наследнике, то он так и записывается:
int foo(int a)
а если записываешь другие входные аргументы, но для удобства (!) оставляешь то же имя, то это просто перегруженный метод, например
int foo()
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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


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