m
melnik10Oct. 26, 2018, 11:59 a.m.

Как изменить основной клик мыши в виджете?

Qt

Здравствуйте. Подскажите пожалуйста , как изменить основной клик мыши в виджете с ЛКМ на колесико или ПКМ?

We recommend hosting TIMEWEB
We recommend hosting TIMEWEB
Stable hosting, on which the social network EVILEG is located. For projects on Django we recommend VDS hosting.

Do you like it? Share on social networks!

5
Evgenii Legotckoi
  • Oct. 26, 2018, 5:57 p.m.

Добрый день!

Можете попробовать переопределить метод mousePressEvent или mouseReleaseEvent .

void Widget::mousePressEvent(QMouseEvent *event)
{
    if (event->buttons() & Qt::LeftButton)
    {
        QMouseEvent* evt = new QMouseEvent(QEvent::MouseButtonPress, event->pos(), Qt::MidButton, Qt::MouseButtons(), Qt::KeyboardModifiers());
        Widget::mousePressEvent(evt);
    }
}

Но это будет для конкретного виджета, хотя вообще не понимаю, зачем вам это нужно.



И убедительная просьба, создавайте, пожалуйста, подобные темы в соответствующем разделе форума о Qt . Раздел EVILEG предназначен для вопросов, касающихся непосредственного развития сайта, баги там, предложения, идеи и т.д.


    m
    • Oct. 27, 2018, 3:12 a.m.

    Извините. Учту это в след раз.

    Да, я знаю этот метод, он мне не удобен, т.к. в моем приложении больше 1000 строк в методах mouseevent. Делаю обучающее приложение по программе, в которой основной клик на среднюю кнопку. Возможно ли это сделать проще?

      Evgenii Legotckoi
      • Oct. 27, 2018, 6:47 a.m.

      Не помню, чтобы функционал по подмене событий мыши в Qt вообще присутствовал, это несколько специфичное поведение, которое нужно в рамах вашего отдельно взятого приложения. Поэтому это просто не может существовать в рамках библиотеки, для библиотеки Qt это не нужно.

      Обычно, если нужно обрабатывать особым образом какие-либо события мыши, то делают переопределение событий мыши. Но у вас как я понимаю проблема в том, что таких виджетов много и в каждом писать одно и тоже - это оверхед очень большой.

      Как я думаю, нужно либо через install filter переопределять обработку событий, либо сделать базовый класс, который наследован от QWidget, в котором вы переопределите метод обработки кликов мыши и будете кидать нужный вам сигнал уже наследоваться от этого класс. Аналогично для всех остальных виджетов (QPushButton и т.д.), которые вам нужно, делать промежуточный класс, в котором имеется данная обработка по подмене событий. Полагаю, что иначе никак.

        m
        • Oct. 27, 2018, 7:11 a.m.

        А могу ли я скопировать класс qpushbutton, изменить его ? Мне необходимо организовать нажатие кнопок на колёсико мыши.


          Evgenii Legotckoi
          • Oct. 27, 2018, 7:22 a.m.

          Вам не нужно его копировать, вам нужно от него наследоваться.

          Вот в этой статье есть пример наследования от QPushButton


            Comments

            Only authorized users can post comments.
            Please, Log in or Sign up
            AD

            C ++ - Test 004. Pointers, Arrays and Loops

            • Result:50points,
            • Rating points-4
            m

            C ++ - Test 004. Pointers, Arrays and Loops

            • Result:80points,
            • Rating points4
            m

            C ++ - Test 004. Pointers, Arrays and Loops

            • Result:20points,
            • Rating points-10
            Last comments
            i
            innorwallNov. 15, 2024, 1:27 p.m.
            Release of C++/Qt and QML application deployment utility CQtDeployer v1.4.0 (Binary Box) optionally substituted alkoxy, optionally substituted alkenyloxy, optionally substituted alkynyloxy, optionally substituted aryloxy, OCH, OC H, OC H, OC H, OC H, OC H, OC H, O C CH, OCH CH OH, O…
            i
            innorwallNov. 15, 2024, 8:26 a.m.
            Qt/C++ - Lesson 031. QCustomPlot – The build of charts with time buy generic priligy We can just chat, and we will not lose too much time anyway
            i
            innorwallNov. 15, 2024, 6:03 a.m.
            Qt/C++ - Lesson 060. Configuring the appearance of the application in runtime I didnt have an issue work colors priligy dapoxetine 60mg revia cost uk August 3, 2022 Reply
            i
            innorwallNov. 14, 2024, 11:07 p.m.
            Circuit switching and packet data transmission networks Angioedema 1 priligy dapoxetine
            i
            innorwallNov. 14, 2024, 10:42 p.m.
            How to Copy Files in Linux If only females relatives with DZ offspring were considered these percentages were 23 order priligy online uk
            Now discuss on the forum
            i
            innorwallNov. 14, 2024, 2:39 p.m.
            добавить qlineseries в функции priligy amazon canada 93 GREB1 protein GREB1 AB011147 6
            i
            innorwallNov. 11, 2024, 9:55 p.m.
            Всё ещё разбираюсь с кешем. priligy walgreens levitra dulcolax carbs The third ring was found to be made up of ultra relativistic electrons, which are also present in both the outer and inner rings
            9
            9AnonimOct. 25, 2024, 7:10 p.m.
            Машина тьюринга // Начальное состояние 0 0, ,<,1 // Переход в состояние 1 при пустом символе 0,0,>,0 // Остаемся в состоянии 0, двигаясь вправо при встрече 0 0,1,>…

            Follow us in social networks