Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / сдвиг влево движущейся фигуры при нажатии клавиши qt / 5 сообщений из 5, страница 1 из 1
21.06.2014, 00:49
    #38676072
mr_virtus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сдвиг влево движущейся фигуры при нажатии клавиши qt
Привет!

Подскажите, как реализовать движении фигуры влево, при нажатии клавиши left. Фигура движется сверху вниз.

Вот мой код:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
#include "glass.h"
int i = 1;

Glass::Glass(){
    timer = new QTimer(this);
    connect(timer, SIGNAL(timeout()), this, SLOT(mover()));
    timer->start(50);
}

void Glass::paintEvent(QPaintEvent *event)
{
    QPainter painter(this);
    painter.setRenderHint(QPainter::Antialiasing, true);
    painter.setBrush(QBrush(Qt::red, Qt::DiagCrossPattern));
    painter.setPen(QPen(Qt::blue, 3, Qt::DashLine));
    painter.drawRect(showRect());
}

void Glass::keyPressEvent(QKeyEvent *pe){
    switch (pe->key()) {
    case Qt::Key_Left:

        break;
    default:
        break;
    }
}

QRect Glass::showRect(){
    QRect rect(20, 20, 20, 20);
    double x = 30;
    double y = i;
    i = i + 2;
    rect.moveBottomRight(QPoint(x, y));
    return rect;
}

void Glass::mover(){
    update();
}



Я использую keyPressEvent. А как дальше?

Спасибо.
...
Рейтинг: 0 / 0
21.06.2014, 01:15
    #38676082
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сдвиг влево движущейся фигуры при нажатии клавиши qt
mr_virtusПодскажите, как реализовать движении фигуры влево, при нажатии клавиши left. Фигура движется сверху вниз.

Вот мой код:Неправда. Это не твой код. Спёр у кого-то.

mr_virtusЯ использую keyPressEvent. А как дальше?

Спасибо.А дальше: найди где рисуется фигура. Что в этой процедуре надо изменить чтобы изменить направление?
...
Рейтинг: 0 / 0
21.06.2014, 01:38
    #38676089
mr_virtus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сдвиг влево движущейся фигуры при нажатии клавиши qt
White Owl,

я сейчас немного переделал. Сделал два класса - figure и glass. Собственно figure - будет сама фигура, а glass место для рисования.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
#include "glass.h"

Glass::Glass(){
    timer = new QTimer(this);
    connect(timer, SIGNAL(timeout()), this, SLOT(mover()));
    timer->start(50);
}

void Glass::paintEvent(QPaintEvent *event)
{
    QPainter painter(this);
    painter.setRenderHint(QPainter::Antialiasing, true);
    painter.setBrush(QBrush(Qt::red, Qt::DiagCrossPattern));
    painter.setPen(QPen(Qt::blue, 3, Qt::DashLine));
    painter.drawRect(figure.showRect());
}

void Glass::keyPressEvent(QKeyEvent *pe){
    switch (pe->key()) {
    case Qt::Key_Left:
        figure.moveLeft();
        break;
    default:
        break;
    }
}

void Glass::mover(){
    update();
}



Но теперь у меня не заходить в метод keyPressEvent



Почему так?

Спасибо.
...
Рейтинг: 0 / 0
21.06.2014, 01:42
    #38676091
mr_virtus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сдвиг влево движущейся фигуры при нажатии клавиши qt
White Owl,

когда падает, то рисуется в этом методе:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
QRect Figure::showRect(){
    double x = 30;
    double y = i;
    i = i + 2;
    rect.moveBottomRight(QPoint(x, y));
    return rect;
}



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

Код: plaintext
1.
2.
3.
void Figure::moveLeft(){
    rect.moveLeft(5);
}




Но в него не могу зайти, потому что не срабатывает keyPressEvent...
...
Рейтинг: 0 / 0
21.06.2014, 01:47
    #38676092
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сдвиг влево движущейся фигуры при нажатии клавиши qt
mr_virtusWhite Owl,

когда падает, то рисуется в этом методе:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
QRect Figure::showRect(){
    double x = 30;
    double y = i;
    i = i + 2;
    rect.moveBottomRight(QPoint(x, y));
    return rect;
}

Молодец.
Теперь прочитай букварь про инициализацию переменных. Зачем это нужно и что бывает если этого не сделать.

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

Код: plaintext
1.
2.
3.
void Figure::moveLeft(){
    rect.moveLeft(5);
}




Но в него не могу зайти, потому что не срабатывает keyPressEvent...Читай тут:
http://qt-project.org/doc/qt-4.8/qwidget.html#keyPressEvent
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / сдвиг влево движущейся фигуры при нажатии клавиши qt / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]