MATLAB Answers

How can I prevent questdlg bonking?

22 views (last 30 days)
geotocho
geotocho on 6 Sep 2017
Commented: Jed on 3 Feb 2020
Hi,
Provided is a simple construct not a working example of a code which bonks to excess until questdlg is satified. The relentless bonking overtakes all user control (keyboard and mouse). Is there a piece of code which mutes the neediness of questdlg?
while true
string = questdlg(...)
if strcmp(string, otherString)
do this task
end
update truth
end
tldr: quesdlg bonks relentlessly when unanswered within while loop. What is a simple fix to allow the user to do other tasks on their computer while leaving questdlg unanswered?
  3 Comments
geotocho
geotocho on 7 Sep 2017
Analyst- Definition 3 most closely resembles my expression of bonk. Thanks Steven for more professionally identifying the dialogue box bonking in your response.

Sign in to comment.

Answers (4)

Steven Lord
Steven Lord on 7 Sep 2017
As Robert said, questdlg waits for you to answer. If it was able to proceed to the next line if left unanswered, what would you expect the variable string (BTW if you're actually using that as the name of your variable you may want to change it since now string has a meaning in MATLAB) to be on that next line where you compare it to otherString?
  2 Comments
John D'Errico
John D'Errico on 7 Sep 2017
Um, just don't use questdlg? There are far more usable interface styles in existence.

Sign in to comment.


Robert U
Robert U on 7 Sep 2017
Hi geotocho,
since questdlg() is using an uiwait-command to prevent the user from interacting with the window the only suggestion is to write your own myQustdlg - GUI using dialog() in which the window is created as you desire.
questdlg() souce code can be read in Matlab R2014b. Thus, you can gain some inspiration.
Kind regards,
Robert
  2 Comments
Robert U
Robert U on 8 Sep 2017
Hi geotocho,
the function questdlg() is well documented and "open source". In case the functionality of that particular function is not serving your needs the only option would be to program your own. Even for that there are enough possibilities inside Matlab.
The same question was asked in 2011: https://de.mathworks.com/matlabcentral/newsreader/view_thread/314299. It was answered properly by Phil Goddard.
The developers you would like to feed are driven by customer needs. It seems that since 2011 there are not much customers asking for that feature or they are helping themselves.
Kind regards,
Robert

Sign in to comment.


Walter Roberson
Walter Roberson on 7 Sep 2017
There is no option to questdialog that has the behavior you are asking for. The behavior of modal dialogues is controlled by your operating system, not by MATLAB.

Jed
Jed on 9 Jan 2020
Edited: Jed on 9 Jan 2020
There is a good answer to your question here:
  2 Comments
Jed
Jed on 3 Feb 2020
Walter: I am a somewhat inexperienced user on this forum, but I have still seen your name enough (and read enough of your answers) to know that you are a guru and someone to be trusted.
I am loathe to disagree with you, but I have tried modifying the questdlg.m function to remove the modal option and (for me at least) the question still blocks the code until a button is selected. I am using linux and an old 2012 version of matlab, so perhaps it is different for others. From the help text of questdlg, I read:
% QUESTDLG uses UIWAIT to suspend execution until the user responds.
and here is the code that implements this functionality from questdlg.m:
if ishghandle(QuestFig)
% Go into uiwait if the figure handle is still valid.
% This is mostly the case during regular use.
uiwait(QuestFig);
end

Sign in to comment.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!