Zdarzenie - Wciśnięcie klawisza

0

Witam po raz kolejny, teraz już piszę z założonego konta :D Postanowiłem pobawić się w odczytywanie znaków, jednak nie jestem w stanie znaleźć błędu jaki popełniam. Program ma za zadanie zmianę napisu "Jakis Napis" na napis "Myszka" jeżeli kliknę na przycisk "Włącz" albo zmianę na napis "Klawiatura" jeśli nacisnę klawisz a. Po uruchomieniu programu po wciśnięciu przycisku napis zmienia się na myszka, ale podczas wciskania klawisza a program nie reaguje.

mainwindow.hpp:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QWidget>
#include <QMainWindow>
#include <QPushButton>
#include <QLabel>
#include <QApplication>
#include <QTextCodec>
#include <QKeyEvent>
#include <QMessageBox>



class MainWindow : public QMainWindow
{
    Q_OBJECT
    

private:
    QPushButton *przycisk1;
    QLabel *etykieta1;

public:
    MainWindow();


public slots:
    int funkcja();

protected:
    void funkcja1(QKeyEvent *event);


};

#endif // MAINWINDOW_H

mainwindow.cpp

#include "mainwindow.hpp"

MainWindow::MainWindow()
{
    QTextCodec::setCodecForTr (QTextCodec::codecForName ("Windows-1250"));
    przycisk1 = new QPushButton(tr("&Włącz"), this);
    przycisk1->setGeometry(5, 30, 100, 30);

    etykieta1 = new QLabel(tr("Jakis Napis"), this);
    etykieta1->setGeometry(5, 5, 150, 30);
    connect(przycisk1, SIGNAL(clicked()), this, SLOT(funkcja()));

    setMinimumSize(300, 300);
    resize(480, 320);
}

int MainWindow :: funkcja()
{

    etykieta1->setText(tr("Myszka"));
}

void MainWindow :: funkcja1(QKeyEvent *event)
{
        if(event->key() == Qt::Key_A)
        {
            etykieta1->setText("Klawiatura");
        }

}
 

main.cpp

#include "mainwindow.hpp"


int main (int argc, char *argv[])
{


   QApplication app(argc, argv);
   MainWindow window;

   window.show();

   return app.exec();

}


 
1

W klasie QWidget nie ma funkcji

void funkcja1(QKeyEvent*);

Są jedynie

void 	keyPressEvent ( QKeyEvent *);
void 	keyReleaseEvent ( QKeyEvent *);</codE>
i to którąś z nich powinieneś zaimplementować.
0

Dzięki za pomoc , teraz wszystko śmiga. Jeszcze próbuję zrobić, aby po jednoczesnym naciśnięciu dwóch lub więcej klawiszy dawało taki sam efekt. Nie bardzo rozumiem też jak to jest możliwe że metoda np.keyPressEvent "sama się wywołuje", ale z czasem może załapie ;p

1 użytkowników online, w tym zalogowanych: 0, gości: 1