Best way to reuse forms(or ui design) in a project [SOLVED]
-
wrote on 11 Jun 2012, 07:09 last edited by
I am creating 10 different forms. All of them have a common header and footer. Header will have the same background image but different titles for different forms. Footer is also similar in concept. I would like to make the header and footer design only once and reuse them in all the forms. I should be able to set some properties like title from individual forms(or the associated implementation class). And if I make some design changes(like an extra label) later in header, it should be reflected on individual forms.
Also I would like to do all the ui design using QtCreator.From my understanding so far, I can think of following possible solutions.
-
Inherit from a class implementing the common form design.
- I will not be able to use QtCreator for designing child forms.
-
Create a template with header & footer and use the template for creating forms.
- Any later change in header design will not be reflected on the forms
-
Create custom widgets for header and footer. Integrate with QtCreator and use in individual forms.
- Relatively complex and some extra overhead.
Since I am new to Qt, I am not sure which is the best way to go ahead or there are other options(Qt way!) available. Would any one help me on this? Any help would be appreciated.
Thanks,
-lijo -
-
wrote on 11 Jun 2012, 07:25 last edited by
In my opinion, the best way - to create patterns and include it from all your forms.
Create QWidget class which will represent your header
Add it from your form. As example: ui->layout->addWidget(new Header());
...
PROFIT!!1
Undderstood?
-
wrote on 11 Jun 2012, 07:41 last edited by
Thanks for the quick response!
bq. 2. Add it from your form. As example: ui->layout->addWidget(new Header());
This is much better and easier(Qt way!)
-
wrote on 11 Jun 2012, 07:47 last edited by
It's not Qt-way)) - it's logic way. In dev it called
ui templates
(you can change one widget and other widgets will change their state).P.S.
@
thread.setName(thread.name().append("[SOLVED] "));
thread.update();
@ -
wrote on 11 Jun 2012, 08:00 last edited by
I would bet on making a custom QWidget. The constructor could also accept a QString for the title.
Chapter 5 of 'C++ GUI Programming With Qt 4' is dedicated to custom widgets. A must-have book, anyway.
-
wrote on 11 Jun 2012, 11:50 last edited by
Thanks for the suggestions. I will go ahead with custom widget approach(with QtCreator plugin). Integration with QtCreator is very useful for me, as I will be doing lot of experiments with design.
6/6