Hi!

I just experienced same strange behavior of QPushButton. I want to kindly ask 
for some
explanations.

I wrote a QDialog derived dialog. That dialog has a standard QDialogButtonBox 
with
"Accept" and "Close" buttons. It also has various other widgets, especially a 
table view
for item selection and a more complex generic/reusable filter panel (QWidget 
derived) that
can be attached to any table view for complex user side filtering. That panel 
contains
various widgets, including two buttons.

I now have tripped painfully over a strange behavior that I could track back to 
the fact
that one of those two buttons was automagically set as the dialog's default 
button. Now,
whenever a user presses <Enter> to confirm QLineEdit filter input, also the 
mentioned
clear button is activated - causing a fabulous mess.

After some research I could explain that unexpected behavior:

autoDefault : bool
   This property holds whether the push button is an auto default button.
   ...
   This property's default is true for buttons that have a QDialog parent

This also means there is a workaround: I need to call "setAutoDefault(false)" 
on each
button that has the slightest chance to be ever used in a dialog. Everywhere. 
That is
doable but seems very counterintuitive to me.

So my questions are:
1. Is this actually how the autoDefault mechanism should work?
2. Why an opt-out instead of an opt-in?
3. Regarding opt-out: Why not restricting the autoDefault default of true to 
buttons with
QDialogButtonBox parents instead of QDialog parents?
4. Anyway, is it good style to change the default value (!) of a property 
dynamically like
this?

Thanks in advance!

-- 
Best Regards, 
Bernhard Lindner

Attachment: signature.asc
Description: This is a digitally signed message part

_______________________________________________
Development mailing list
Development@qt-project.org
https://lists.qt-project.org/listinfo/development

Reply via email to