Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

Best way to reuse forms(or ui design) in a project [SOLVED]



  • 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.

    1. Inherit from a class implementing the common form design.

      • I will not be able to use QtCreator for designing child forms.
    2. 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
    3. 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



  • 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?



  • 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!)



  • 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();
    @



  • 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.



  • 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.


Log in to reply