Help with QWidget::show()
-
Sorry, I'm feeling pretty dumb here.
Another class executes the ChartProperties->Show() method and when the dialog is rendered, I want to trap the ChartProperties show() event.
I have irtual void showEvent(QShowEvent *event) override;
in my ChartProperties header but I don't understand how to receive the showEvent.. -
As explained in the documentation this function is called when the widget is shown, you must not call it by yourself.
-
Hi,
@mmikeinsantarosa said in Help with QWidget::show():
I have irtual void showEvent(QShowEvent *event) override;
This is just a declaration, you still have to implement the function itself.
-
Do I create a slot then connect this event to my slot?
-
@mmikeinsantarosa said in Help with QWidget::show():
Do I create a slot then connect this event to my slot?
What slot? showEvent() is a class function, not a slot. Please learn C++ basics first.
-
Your question seems pretty close this this one
As an alternative, you can simply do:
MyDialog::show() { myFunction(); QDialog::show(); }
Using showEvent is dangerous cause it can be called multi times !
-
The method name is "showEvent" which leads me to think it's a signal. It's also listed in the signals list in the documentation for QDialog so I thought it might actually be a signal.
thanks for clearing this up SGaist.
-
@mmikeinsantarosa said in Help with QWidget::show():
It's also listed in the signals list in the documentation for QDialog
That's wrong, neither in the Qt 5 nor in the Qt 6 documentation.
It is listed under Reimplemented Protected Functions.
Beside that, signals name do not finish in "event". They usually have a name in relation to some action like rejected in QDialog.
-
I stand corrected. entering QDialog in the Qt help and selecting signals reveals signals at the top, with 3 items under it then Reimplemented Protected Functions where the showEvent function is listed.
-
@mmikeinsantarosa
Indeed, that is how Qt documentation lays out its methods.To reiterate something @Christian-Ehrlicher said. In Qt nomenclature:
-
Methods ending in
Event
(showEvent()
,mouseMoveEvent()
) are not signals. Instead they areprotected virtual
methods. You must sub-class andoverride
if you want to access them. -
Signals tend to be named as the past tense of something that has happened (
clicked()
,customContextMenuRequested()
). You cannotoverride
them. You canconnect()
to them, without needing to sub-class. -
And slots are just named as an action to be performed (
show()
,setDiabled()
).
-