Important: Please read the Qt Code of Conduct -

Button onClick not firing for touchscreen devices

  • Using that latest Qt 5.1.2, a button onclick event is not firing when run on a Windows 8 touchscreen. Using Qt 5.0, it fires just fine.

    To reproduce, just create the html5application test app and change your index.html to be this:

    @<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "">
    <html xml:lang="en">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <style type="text/css">
    body { margin: 0; font-size: 2em; background-color: white; }
    h1 { text-align: center; color: red; }
    h1 + h1 { color: green; }
    h1:last-child { color: blue; }
    #quit { background-color: gray; color: white; font-weight: bold; display: block; text-align: right; }
    var counter = 0;
    function toggleElement()
    var elements = document.getElementsByTagName('h1');
    for (var i = 0; i < elements.length; ++i)
    elements[i].style.display = (counter % elements.length) == i ? '' : 'none';
    setTimeout('toggleElement()', 1000);
    window.onload = function()
    document.getElementById("quit").onmousedown = function()
    function clicked()
    <a id="quit">X</a>
    <p><button type="button" >Click Me!</button></p>

    Works fine when compiled with 5.0 (you see the javascript alert when you touch the button) but nothing shows up on the tablet when compiled against the latest Qt.

  • Still not sure why this is firing - I didn't have the patience to find out how it was all supposed to work by looking at the source code - but I did find a work around. I just turn off all touch events:
    vww_ui->webView->setAttribute(Qt::WA_AcceptTouchEvents, false);
    Not really the best solution, but as we don't currently do anything with them, it works for us (for now).

Log in to reply