QT - przechwycenie klawisza (keypressed)

QT - przechwycenie klawisza (keypressed)
Rivit
  • Rejestracja:prawie 7 lat
  • Ostatnio:prawie 5 lat
  • Postów:25
0

Witam, jako że ucze sie Qt to naklepałem taki kod:

main.cpp
https://4programmers.net/Pastebin/9085

player.cpp
https://4programmers.net/Pastebin/9086

player.h
https://4programmers.net/Pastebin/9087

Co tu jest nie tak, już próbuje i próbuje i nadal nie wychodzi....
Tam są 2 linijki z qDebug - sprawdzałem czy dobry adres jest zwracany no i jest dobry, ten sam.

Ktoś mógłby mnie troszkę naprowadzić? ;)

MarekR22
Moderator C/C++
  • Rejestracja:ponad 17 lat
  • Ostatnio:minuta
2

Obiekt wskazywany przez pl nie jest dodane ani do sceny ani rodzica, który jest przypisany do sceny.
Efekt jest taki, że nie otrzymuje żadnych zdarzeń.
Do sceny dodajesz inny obiekt tworzony przez Player ale nie ma między nimi żadnej relacji typu rodzić dziecko (typowej dla QGraphicsScene).

Po kiego grzyba korzystasz z pastebin? Spokojnie mogłeś wkleić kod tutaj.

Jak poprawisz tak powinno zadziałać:

Kopiuj
int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    QGraphicsScene *scene = new QGraphicsScene();

    Player *pl = new Player(50, 50, 30, 30);
    scene->addItem(pl);

    QGraphicsView view(scene);
    view.show();

    return app.exec();
}

I wywal pole Player::m_pl.


Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.
edytowany 1x, ostatnio: MarekR22
Rivit
  • Rejestracja:prawie 7 lat
  • Ostatnio:prawie 5 lat
  • Postów:25
0

Hmm. To gdzie wtedy będę miał jakby uchwyt do mojego rectangla jak wyrzucę pole m_pl? :o

MarekR22
Moderator C/C++
  • Rejestracja:ponad 17 lat
  • Ostatnio:minuta
2

No to po co Player dziedziczy po QGraphicsRectItem?
Rozumiesz na czym polega dziedziczenie?


Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.
Rivit
  • Rejestracja:prawie 7 lat
  • Ostatnio:prawie 5 lat
  • Postów:25
0

Coś tam czytałem ale chyba za mało wiem.

Po tym co kazałeś poprawić wszystko działa, dzięki za pomoc!

Spine
nie dziękuj... doceń posty!
Rivit
  • Rejestracja:prawie 7 lat
  • Ostatnio:prawie 5 lat
  • Postów:25
0

A jeszcze zapytam...

No bo w tym modelu co przedstawiłem mam klase, która ma jeden kwadrat. A co w przypadku, gdybym chciał żeby klasa player zawierała 2 kwadraty?

RE
  • Rejestracja:ponad 18 lat
  • Ostatnio:około godziny
0

No bo w tym modelu co przedstawiłem mam klase, która ma jeden kwadrat. A co w przypadku, gdybym chciał żeby klasa player zawierała 2 kwadraty?

potrzeba ci podstaw c++, vectory, listy itd. Przystopuj z qt i prób na razie jakieś program konsolowe. Poszukaj tutoriali do qt nawet na youtube są.


We are the 4p. Existence, as you know it, is over. We will add your biological and technological distinctiveness to our own. Resistance is futile
MarekR22
Moderator C/C++
  • Rejestracja:ponad 17 lat
  • Ostatnio:minuta
1

Dodaj kolejne elementy jako dzieci (dodaj do rodzica) http://doc.qt.io/qt-5/qgraphicsrectitem.html#QGraphicsRectItem-2 :

Kopiuj
Player::Player(int x, int y, int w, int h, QGraphicsItem *parent)
    : QGraphicsRectItem(x, y, w, h, parent)
{
    // dzięki this Player jest automatycznie właścicielem obiektu, więc delete jest nie potrzebne
    auto child = new QGraphicsRectItem(w/4, h/4, w/2, h/2, this); 
    child->setPen(Qt:red);
    child->setBrush(Qt::blue);
}

Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.
edytowany 1x, ostatnio: MarekR22

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.