Przeciążenie metod myszy, przyciśnięcie i puszczenie.

0

Witam,
Mam pewne pytanie. Otóż w Qt przeciążyłem metody do przyciśnięcia i puszczenia lewego przycisku, lecz tylko wciśnięcie działa, a puszczenie nie. Między przyciśnięciem i puszczeniem chciałbym wykonać np przeniesienie, no ale nie działa obsługa puszczania klawisza.

void window::mousePressEvent(QMouseEvent *e)
{
    if(e->buttons() == Qt::LeftButton)
    {
        leftMousePressed = true;
        qDebug() << "Left button";
    }
    else
    {
        leftMousePressed = false;
        qDebug() << "no Left button";
    }
}

void window::mouseReleaseEvent(QMouseEvent *e)
{
    if(e->buttons() == Qt::LeftButton)
    {
        leftMousePressed = false;
        qDebug() << "Left button relase";
    }
}

1

Zmień e->buttons() na e->button().

0

Niestety nadal nie działa

0

Rozwiązanie:

void window::mousePressEvent(QMouseEvent *e)
{
    if(e->button() == Qt::LeftButton)
    {
        leftMousePressed = true;
        qDebug() << "Left button";
    }
    else
    {
        leftMousePressed = false;
        qDebug() << "no Left button";
    }
}

void window::mouseReleaseEvent(QMouseEvent *e)
{
    QMainWindow::mouseReleaseEvent(e);
    if(e->button() == Qt::LeftButton)
    {
        leftMousePressed = false;
        qDebug() << "Left button relase";
    }
}
1

brakuje e->accept(); w mousePressEvent

Żeby było jasne: QMainWindow i pochodne, nie powinny nadpisywać zdarzeń myszy. Powinieneś umieści jakiś widget w QMainWindow i w nim obsługiwać mysz.
Radzę też przeszukać i poczytać dokumentację Qt na temat DragAndDrop, bo dużo jest zrobione za ciebie.

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