Home > Software design >  QT C How to lock application or disable clickable for 3-5 minute
QT C How to lock application or disable clickable for 3-5 minute

Time:06-23

I want to disable click for whole application while receiving data from serial connection. I want to print information on the screen with a message box and turn off clicking for a certain time, how can I do it?

CodePudding user response:

Grabbing mouse for widgets or setKeepMouseGrab for qml may be useful. Add a dummy widget which gets the mouse events. Make it grab the events when you start receiving data.

CodePudding user response:

'Blocking' an application is never a good idea, because your OS will think the application unresponsive and shoot it down forcibly.

What you want, is a modal dialog (which runs on the main thread) with a progress indicator and no clickable interfaces.

A very basic code to achieve that would be:

void startTransfer()
{
    ProgressBarDialog dlg;    //Inherits from QDialog
    //Create asynchronous transfer task.
    dlg.setModal(true);
    //Connect task and modal dialog
    dlg.exec();
}

exec will 'block' all interaction with the other windows while the transfer is running. In fact, exec will only return, once the dialog is done with its job.

  •  Tags:  
  • c qt
  • Related