Qt Widgets and derived classes

2019-09-04 20:41发布

问题:

I am wondering if there is a way to do this.

  1. I create a Qt Application (using Creator 3.6.1, Qt 5.6.0).
  2. I add a widget to the main window. For example a QGraphicsView called myView.
  3. I create a C++ class derived from QGraphicsView (called DerivedView)

code of DerivedView class:

class DerivedView : public QGraphicsView {
...

I would like my new DerivedView class to control this widget. I can access a pointer to the object through ui->myView. Is there any way to do get my derived class to work with the already instantiated QGraphicsView?

DerivedView * dView = ui->myView;

Or do I need to not derive my class from QGraphicsView and just add a pointer as a data member?

class DerivedView {
    QGraphicsView * gv;
...

回答1:

You should promote your QGraphicsView to DerivedView, for this follows the following steps.

Right click on QGraphicsView and select promote to ..:

And add the name of the class and header

And press add.

And then press on promote. After this, ui->myView is already a member of the DerivedView class