powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / сдвиг влево движущейся фигуры при нажатии клавиши qt
5 сообщений из 5, страница 1 из 1
сдвиг влево движущейся фигуры при нажатии клавиши qt
    #38676072
mr_virtus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет!

Подскажите, как реализовать движении фигуры влево, при нажатии клавиши 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
сдвиг влево движущейся фигуры при нажатии клавиши qt
    #38676082
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr_virtusПодскажите, как реализовать движении фигуры влево, при нажатии клавиши left. Фигура движется сверху вниз.

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

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

Спасибо.А дальше: найди где рисуется фигура. Что в этой процедуре надо изменить чтобы изменить направление?
...
Рейтинг: 0 / 0
сдвиг влево движущейся фигуры при нажатии клавиши qt
    #38676089
mr_virtus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
сдвиг влево движущейся фигуры при нажатии клавиши qt
    #38676091
mr_virtus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
сдвиг влево движущейся фигуры при нажатии клавиши qt
    #38676092
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
5 сообщений из 5, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / сдвиг влево движущейся фигуры при нажатии клавиши qt
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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