查看完整版本: [-- 向各位高手请教一个关于Qt setStyleSheet()的奇怪问题。。 --]

QTCN开发网 -> Qt嵌入式开发 -> 向各位高手请教一个关于Qt setStyleSheet()的奇怪问题。。 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

sunxq 2022-03-08 11:49

向各位高手请教一个关于Qt setStyleSheet()的奇怪问题。。

我的需求很简单:
(1)当按钮没有按下的时候,显示一个图片;
(2)当按钮按下的时候显示另一个图片。
这两个图片大小相同,区别也很简单,只区别了它“松开”或“被按下”的状态,代码片断是这样的:


    // "检测"按钮
    m_measureButton->setStyleSheet("QPushButton{border-image: url(:/images/HomePage/default/measure-button.png);border: none;}"
                                    "QPushButton:pressed{border-image: url(:/images/HomePage/pressed/measure-button.png);border: none;}");
    size = QImage(":/images/HomePage/default/measure-button.png").size();
    m_measureButton->setFixedSize(size);
    m_measureButton->setText(tr(""));
    m_measureButton->setFocusPolicy(Qt::NoFocus);
    connect(m_measureButton, SIGNAL(clicked()), this, SLOT(onMeasure()));

在具体应用时发现,正常显示是没有问题的,确实是我设定的图片;
问题在于触摸“按下”后,按钮并没有更新为“按下”的那个图片,还需要在“保持按下状态并滑动一下手指”,然后就会显示出被按下的图片。

有哪位大能知道怎么使用setStyleSheet()修正这个缺陷?

BTW。。。在onMeasure()里更换图片的方法就不用回复了

hitzsf 2022-03-08 13:13
qt 5.15.2 没有问题

sunxq 2022-03-08 14:32
谢谢回复,问题的原因找到了,不在代码上。在libts里,我用的libts版本中,ts_test在点下触摸后不滚屏;手指滑动了才滚屏。

换了个libts版本就正常了。

sunxq 2022-03-08 23:38
更正一下:问题也不在libts里,而在内核的驱动里。

花了大半天分析和测试触摸输入设备的驱动程序,测试向input-core报告触摸事件和释放事件的方法,尝试了N多次(N>30)才成功。

这个特征和QT无关,属于驱动程序,(向input通告触摸行为和位置的)关键代码片断如下:
        ......
    if (pressed)
    {
        input_mt_slot(ts->input_dev, id);
        input_mt_report_slot_state(ts->input_dev, MT_TOOL_FINGER, true);

        input_report_abs(ts->input_dev, ABS_MT_POSITION_X, input_x);
        input_report_abs(ts->input_dev, ABS_MT_POSITION_Y, input_y);
        input_report_abs(ts->input_dev, ABS_MT_TOUCH_MAJOR, input_w);
        input_report_abs(ts->input_dev, ABS_MT_WIDTH_MAJOR, input_w);
        input_report_abs(ts->input_dev, ABS_MT_TRACKING_ID, id);
        input_mt_sync(ts->input_dev);
    }
    else
    {
        input_mt_slot(ts->input_dev, id);
        input_mt_report_slot_state(ts->input_dev, MT_TOOL_FINGER, false);
    }
        ......

供需要的人参考。


查看完整版本: [-- 向各位高手请教一个关于Qt setStyleSheet()的奇怪问题。。 --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled