Solved Help with QWidget::show()
I need to call a function when a QWidget gets its show() method gets called and I have looked at examples for Mainwindow but I don't understand how this works.
The widget that needs to implement show() is called ChartProperties. For declaring it in the header,
void MainWindow::showEvent(QShowEvent *ev);
doesn't work because this isn't a mainwindow and
void ChartProperties::showEvent(QShowEvent *ev)
complains about an extra member showevent.
Any suggestions would be much appreciated.
I'm clueless here and thanks for any response.
And the widget is actually a "QDialog".
And please show how you defined and declared this function.
Realizing that the class is actually a QDialog so I just changed the declaration to
virtual void showEvent(QShowEvent *event) override;
and it doesn't complain now.
So now, how do I hook it up to execute another function?
Right clicking on it and selecting refactor doesn't provide a way to create a function in my source. Do I need to create a slot to connect it to?
mmikeinsantarosa last edited by mmikeinsantarosa
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.
Do I create a slot then connect this event to my slot?
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.
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.
JonB last edited by
Indeed, that is how Qt documentation lays out its methods.
To reiterate something @Christian-Ehrlicher said. In Qt nomenclature:
Methods ending in
mouseMoveEvent()) are not signals. Instead they are
protected virtualmethods. You must sub-class and
overrideif you want to access them.
Signals tend to be named as the past tense of something that has happened (
customContextMenuRequested()). You cannot
overridethem. You can
connect()to them, without needing to sub-class.
And slots are just named as an action to be performed (