Create a window of custom class type in Qt

788 views Asked by At

This is my first question here, so I'm trying to not sound stupid!

EXPLANATION:

I have a main window in Qt that has a button to create (sub-?) windows within the main window. This can be done as many times as the user wants, and each sub-window displays the same set of properties/items. I figured writing a class to hold all these properties would be a smart way to go about it (this would inherit the main window class), as each instance of the child window would automatically get the properties. I am using a slot to create each instance.

QUESTION:

Besides the desired properties, what do I add to the child window class to let Qt know that if I create an object of that type it should open a window?

For example, say I have implemented all the child window properties in a header file that looks something like this:

#include <QObject>
#include <QDialog>                        //Not sure about this

class ChildWindow : public ParentWindow

{
Q_OBJECT

public:
ChildWindow(QObject* parent);
~ChildWindow();

//Remaining properties like QSpinBox, Radio buttons etc

}

how then would I implement my slot? Like this?

void Parent::Slot()
{
ChildWindow* window;
window = new ChildWindow(this);
window->show()
}

My problem is that I don't see any code that indicates that window is a separate window. I can see that it is of type ChildWindow, but does just including QDialog give it the show() functionality?

EDIT:

I realise the first suggestion would be try and see if this works, but in the unlikely scenario that it works I wouldn't have learnt anything and I still wouldn't know why it worked, and if it didn't I would be back here asking this same question. I hope you guys understand.

EDIT 2:

error C2039: 'show' : is not a member of 'ChildWindow'

So I am guessing including QDialog did not do the trick

EDIT 3:

If I add this to the ChildWindow constructor

QDialog* child;
child = new QDialog;
child->show()

Do I have to do the same in the slot definition as well?

0

There are 0 answers