• 7171阅读
  • 3回复

[提问]各位能在Qt/E上使用鼠标滚轮吗? [复制链接]

上一主题 下一主题
离线oceanljp
 

只看楼主 倒序阅读 楼主  发表于: 2011-08-22
关键词: qt/e鼠标滚轮
Qt/E中使用usb鼠标,鼠标的移动正常,但想使用鼠标滚轮时,出现如下warning:
unknown mouse event type=2, code=8, value=0xffffffff


在qt源码中查看了下,相关代码如下:
qt-everywhere-opensource-src-4.6.0\src\gui\embedded\qmouselinuxinput_qws.cpp



for (int i = 0; i < n; ++i) {
        struct ::input_event *data = &buffer;


        bool unknown = false;
        if (data->type == EV_ABS) {
            if (data->code == ABS_X) {
                m_x = data->value;
            } else if (data->code == ABS_Y) {
                m_y = data->value;
            } else {
                unknown = true;
            }
        } else if (data->type == EV_REL) {
            if (data->code == REL_X) {
                m_x += data->value;
            } else if (data->code == REL_Y) {
                m_y += data->value;
            } else {
                unknown = true;
            }
        } else if (data->type == EV_KEY && data->code == BTN_TOUCH) {
            m_buttons = data->value ? Qt::LeftButton : 0;
        } else if (data->type == EV_KEY) {
            int button = 0;
            switch (data->code) {
            case BTN_LEFT: button = Qt::LeftButton; break;
            case BTN_MIDDLE: button = Qt::MidButton; break;
            case BTN_RIGHT: button = Qt::RightButton; break;
            }
            if (data->value)
                m_buttons |= button;
            else
                m_buttons &= ~button;
        } else if (data->type == EV_SYN && data->code == SYN_REPORT) {
            QPoint pos(m_x, m_y);
            pos = m_handler->transform(pos);
            m_handler->limitToScreen(pos);
            m_handler->mouseChanged(pos, m_buttons);
        } else if (data->type == EV_MSC && data->code == MSC_SCAN) {
            // kernel encountered an unmapped key - just ignore it
            continue;
        } else {
            unknown = true;
        }
        if (unknown) {
            qWarning("unknown mouse event type=%x, code=%x, value=%x", data->type, data->code, data->value);
        }
    }


注意红色部分
在linux中,EV_REL为2(表示相对坐标事件), REL_WHEEL为8,(表示鼠标滚轮事件)
从代码与warining的信息看,似乎Qt/E似乎是不支持鼠标滚轮的。
想问问大家的Qt/E上是否能使用usb鼠标滚轮?


使用的是qt 4.7.3




离线oceanljp

只看该作者 1楼 发表于: 2011-08-25


帖子快沉了,自己顶下。
就想问下,大家在Qt/E下使用usb鼠标滚轮时,鼠标滚轮是否能正常工作。比如能使用滚轮移动滚动条。


我鼠标的配置如下:
QWS_MOUSE_PROTO=LinuxInput:/dev/input/event1

离线wutianzhi

只看该作者 2楼 发表于: 2011-12-10
楼主还在吗?我的能正常使用
离线oceanljp

只看该作者 3楼 发表于: 2011-12-16
楼上用的是什么Qt版本?
用的是usb鼠标吗?
鼠标配置QWS_MOUSE_PROTO是怎样的?
快速回复
限100 字节
 
上一个 下一个