Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Distinguish between single and double click events in Qt

Tags:

c++

qt

qt4

I have a QAbstractItemView that needs to react to single and double click events. The actions are different depending on whether it was single clicked or double clicked. The problem that is occurring is that the single click event is received prior to the double click event.

Is there a recommended way/best practice for distinguishing between the two? I don't want to perform the single click action when the user has actually double clicked.

I am using Qt 4.6

like image 731
Jesse Vogt Avatar asked Jan 07 '11 15:01

Jesse Vogt


People also ask

What is the difference between single click and double-click?

Typically, a single click initiates a user interface action and a double-click extends the action. For example, one click usually selects an item, and a double-click edits the selected item.

What is a single click?

single-click (plural single-clicks) (computing) The action of pushing the button on a mouse once in order to perform a different task that would be performed from a double-click or triple-click.

How do I know if double-click?

To detect double clicks with JavaScript you can use the event listener dblclick . The dblclick event is supported in all modern browsers for desktop/laptops, even Internet Explorer 11.

How do you explain double-clicking?

Double-click is a term used to describe the process of quickly pressing a mouse button twice while keeping it still. In most cases, a double-click is with the left mouse button and is used to open or execute a file, folder, or software program.


2 Answers

It's a good UI design to make sure your single-clicks and double-clicks are conceptually related:

Single-Click: select icon
Double-Click: select icon and open it

Single-Click: select color
Double-Click: select color and open palette editor

Notice how in these examples the single-click action is actually a subset of the double-click. This means you can go ahead and do your single-click action normally and just do the additional action if the double-click comes in.

If your user interface does something like:

Single-Click: select icon
Double-Click: close window

Then you are setting your users up to fail. Even if they remember what single-clicking does versus double-clicking all the time, it's very easy to accidentally move your mouse too far while double-clicking or wait too long.

Edit:

I'm sorry to hear that.

In that case, I found these two articles useful:

like image 155
Bill Avatar answered Oct 13 '22 11:10

Bill


You can find answer in the thread titled Double Click Capturing on QtCentre forum;

You could have a timer. Start the timer in the releaseEvent handler and make sure the timeout is long enough to handle the double click first. Then, in the double click event handler you can stop the timer and prevent it from firing. If a double click handler is not triggered, the timer will timeout and call a slot of your choice, where you can handle the single click. This is of course a nasty hack, but has a chance to work.

wysota

like image 27
Piotr Dobrogost Avatar answered Oct 13 '22 09:10

Piotr Dobrogost