a
4 ноября 2019 г. 11:47

qt QEvent

Как использовать mousebotton и alt,cntr,shift?

Рекомендуем хостинг TIMEWEB
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.
2

Добрый день!

Вот пример кода

Widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

private:
    Ui::Widget *ui;

    // QWidget interface
protected:
    void mousePressEvent(QMouseEvent *event);
    void mouseReleaseEvent(QMouseEvent *event);
};

#endif // WIDGET_H

Widget.cpp

#include "Widget.h"
#include "ui_Widget.h"

#include <QApplication>
#include <QDebug>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
}

Widget::~Widget()
{
    delete ui;
}

void Widget::mousePressEvent(QMouseEvent *event)
{
    switch (QApplication::keyboardModifiers())
    {
        case Qt::KeyboardModifier::ShiftModifier:
        {
            qDebug() << "Mouse press event with Shift";
            break;
        }
        case Qt::KeyboardModifier::ControlModifier:
        {
            qDebug() << "Mouse press event with Ctrl";
            break;
        }
        case Qt::KeyboardModifier::AltModifier:
        {
            qDebug() << "Mouse press event with Alt";
            break;
        }
        default:
            qDebug() << "Without modifier";
    }
}

void Widget::mouseReleaseEvent(QMouseEvent *event)
{
    switch (QApplication::keyboardModifiers())
    {
        case Qt::KeyboardModifier::ShiftModifier:
        {
            qDebug() << "Mouse release event with Shift";
            break;
        }
        case Qt::KeyboardModifier::ControlModifier:
        {
            qDebug() << "Mouse press event with Ctrl";
            break;
        }
        case Qt::KeyboardModifier::AltModifier:
        {
            qDebug() << "Mouse press event with Alt";
            break;
        }
        default:
            qDebug() << "Without modifier";
    }
}


Вывод qDebug

Without modifier
Without modifier
Mouse press event with Ctrl
Mouse press event with Ctrl
Mouse press event with Ctrl
Mouse release event with Shift
Without modifier
Mouse press event with Alt
Mouse press event with Shift
Mouse release event with Shift
Without modifier
Without modifier
a
  • 5 ноября 2019 г. 1:30

Спасибо.Это то самое-что надо.

Комментарии

Только авторизованные пользователи могут публиковать комментарии.
Пожалуйста, авторизуйтесь или зарегистрируйтесь
Donate

Здравствуйте, уважаемые пользователи EVILEG !!!

Если сайт вам помог, то поддержите разработку сайта финансово, пожалуйста.

Вы можете сделать это следующими способами:

Спасибо, Евгений Легоцкой

ВЛ
20 января 2020 г. 12:42
Вова Лебедев

C++ - Тест 004. Указатели, Массивы и Циклы

  • Результат:60баллов,
  • Очки рейтинга-1
ВЛ
20 января 2020 г. 12:33
Вова Лебедев

C++ - Тест 001. Первая программа и типы данных

  • Результат:80баллов,
  • Очки рейтинга4
AP
20 января 2020 г. 5:48
Anastassiya Polyakova

C++ - Тест 003. Условия и циклы

  • Результат:57баллов,
  • Очки рейтинга-2
Последние комментарии
17 января 2020 г. 2:31
Андрей Янкович

Выглядит как ошибка библиотеки. Расскажите подробно на какой платформе вы собираете проект (MinGW или MSVC) их версии и версии Qt.
D
16 января 2020 г. 12:06
DENIZ1819

Доброго времени суток, не подскажите, что делать в данной ситуации, после того, как я сделал все вышеуказанные инструкции для подключения библиотеки к проекту?
14 января 2020 г. 5:33
Евгений Легоцкой

Рекомендую Wt, достаточно мощная вещь. Этот фреймворк может использоваться для написания сайтов на C++, либо можно использовать только отдельный компоненты, например только ORM. Но я не знаю, ка…
a
14 января 2020 г. 5:29
ayb

Спасибо за инфу. Поиск качественной ORM привел меня только к sqlite_orm, но не подходит из-за необходимости полноценной поддержки c++14. Про framework Wt не слышал, спасибо за наводку.
14 января 2020 г. 2:50
Евгений Легоцкой

Вы заблуждаетесь. Любая нормальная ORM позволяет выполнение сырых SQL запросов. А если хорошо разобраться в работе моделей данных в Qt, то не составит труда использовать ORM вместе с Qt, ту же с…
Сейчас обсуждают на форуме
20 января 2020 г. 17:06
Алексей Внуков

возможно,но все что я увидел по этому поводу - так это работать с этим адресом, но старые решения на данный момент не работают
VZ
20 января 2020 г. 14:37
Vladimir Zhitkovsky

Еще не очевидное поведение оказалось, что сигнал onVisibleChanged родительского элемента может вызваться раньше, чем вызовуться onCompleted дочерних компонентов.. как мне очень странно. А вот на…
20 января 2020 г. 13:49
Евгений Легоцкой

Добрый день, Касательно удаления строк. Любой QTableView класс, или наследованый от него имеет метод selectionModel() , который возвращает QItemSelectionModel . А эта…
20 января 2020 г. 13:35
Евгений Легоцкой

Добрый день. В Qt по сути используется MV шаблон проектирования. Поскольку контроллер и представление объединены в представлении. Так что да, вы понимаете правильно суть Qt. Насчёт тормозов…
m
20 января 2020 г. 11:14
mihamuz

Совершенно верно. Только увидел Ваше сообщение:)
EVILEG
О нас
Услуги
© EVILEG 2015-2019
Рекомендует хостинг TIMEWEB