Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: iukash от Март 23, 2010, 21:47



Название: Обработка событий нажатия клавиатуры в QGraphicsItem
Отправлено: iukash от Март 23, 2010, 21:47
Переопределяю виртуальную функцию virtual void   keyPressEvent ( QKeyEvent * event ), но ничего не работает, помогите пожалуйста
Цитировать
class MyClass: public QGraphicsItem
{
public:

    virtual void   keyPressEvent ( QKeyEvent * event )
    {
        switch(event->key())
        {
        case Qt::Key_1:QApplication::setOverrideCursor(Qt::PointingHandCursor);
            break;
        }
    }


Название: Re: Обработка событий нажатия клавиатуры в QGraphicsItem
Отправлено: alexman от Март 23, 2010, 22:46
void QGraphicsItem::keyPressEvent ( QKeyEvent * event ) -> Note that key events are only received for items that set the ItemIsFocusable flag...
Выполнено это условие?


Название: Re: Обработка событий нажатия клавиатуры в QGraphicsItem
Отправлено: iukash от Март 23, 2010, 23:05
Я совсем чайник я не понимаю о чем это
Цитировать
Note that key events are only received for items that set the ItemIsFocusable flag...
Куда события устанавливают этот флаг? И что с ним делать?
Я хочу обработать нажатие клавиш, как это сделать, объясните пожалуйста.


Название: Re: Обработка событий нажатия клавиатуры в QGraphicsItem
Отправлено: alexman от Март 23, 2010, 23:12
Попробуй вызвать setFlag( QGraphicsItem::ItemIsFocusable, true ); для элемента этого класса.


Название: Re: Обработка событий нажатия клавиатуры в QGraphicsItem
Отправлено: iukash от Март 23, 2010, 23:37
Цитировать
Попробуй вызвать setFlag( QGraphicsItem::ItemIsFocusable, true ); для элемента этого класса.
Не помогло!!!


Название: Re: Обработка событий нажатия клавиатуры в QGraphicsItem
Отправлено: GreatSnake от Март 24, 2010, 11:55
Т.е. вы выставили для определенного элемента флаг ItemIsFocusable, нажали на этот элемент мышкой и уже потом нажали "1" и не помогло?


Название: Re: Обработка событий нажатия клавиатуры в QGraphicsItem
Отправлено: iukash от Март 24, 2010, 12:15
Прошу прощения alexman да все заработало спасибо огромное, это я вместо флага ItemIsFocusable воткнул ItemIsMovable, вот и пользуйся после этого автодополнением кода!  :-[
GreatSnake  тоже огромное спасибо, за то что не бросаете чайника и помогаете советом!