Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. How to design custom widget in Designer
Forum Updated to NodeBB v4.3 + New Features

How to design custom widget in Designer

Scheduled Pinned Locked Moved General and Desktop
12 Posts 3 Posters 3.4k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • dheerendraD Offline
    dheerendraD Offline
    dheerendra
    Qt Champions 2022
    wrote on last edited by
    #3

    Can you look at Assistant for "Creating Custom Widgets for Designer". This will surely help you. I know you don't want to code.

    Designer creates the *.h file called ui_<yourname>.h file. You can take this file and split the file as .h and .cpp.

    Now you can tweak the process of doing the same.

    Dheerendra
    @Community Service
    Certified Qt Specialist
    http://www.pthinks.com

    1 Reply Last reply
    0
    • H Offline
      H Offline
      harshilsharma63
      wrote on last edited by
      #4

      I generated the header file from Qt Designer but it has this #include "qframe.h" that Creator is unable to find. WHat to do about this?

      1 Reply Last reply
      0
      • H Offline
        H Offline
        harshilsharma63
        wrote on last edited by
        #5

        [quote author="Dheerendra" date="1405663472"]Can you look at Assistant for "Creating Custom Widgets for Designer". This will surely help you. I know you don't want to code.

        Designer creates the *.h file called ui_<yourname>.h file. You can take this file and split the file as .h and .cpp.

        Now you can tweak the process of doing the same.
        [/quote]

        I generated the header file from Qt Designer but it has this #include “qframe.h” that Creator is unable to find. WHat to do about this?

        1 Reply Last reply
        0
        • dheerendraD Offline
          dheerendraD Offline
          dheerendra
          Qt Champions 2022
          wrote on last edited by
          #6

          Are able to create the project with designer form and run your program ? If yes, you should find out the path in which this file exist and give the appropriate include dir path for the project.

          I used Qt 5.2.x and I designed form with QFrame etc. I did not see the any qframe.h included. May be it is specific to your design.

          Dheerendra
          @Community Service
          Certified Qt Specialist
          http://www.pthinks.com

          1 Reply Last reply
          0
          • H Offline
            H Offline
            harshilsharma63
            wrote on last edited by
            #7

            [quote author="Dheerendra" date="1405683430"]Are able to create the project with designer form and run your program ? If yes, you should find out the path in which this file exist and give the appropriate include dir path for the project.

            I used Qt 5.2.x and I designed form with QFrame etc. I did not see the any qframe.h included. May be it is specific to your design.[/quote]

            What I want is a custom widget with some lables, line edits and few other components in it. This component will be used as a UI element in another Qt project. So I create a Frame in designer and included all components I want in this widget. Now I want this Frame with all the widgets it contain to be available as a separate file so that I can simply promote a Widget to this frame (containing other components) in the main project.

            Shouldn't I be creating a frame in designer is this task to be done in some other way?

            1 Reply Last reply
            0
            • dheerendraD Offline
              dheerendraD Offline
              dheerendra
              Qt Champions 2022
              wrote on last edited by
              #8

              No it is right. QFrame is derived from QWidget. It should be fine. I tried to create very similar UI using the designer. My *.h files did not had any qfame.h file. Can you check with small example first ? Which version of Qt you are using ?

              Dheerendra
              @Community Service
              Certified Qt Specialist
              http://www.pthinks.com

              1 Reply Last reply
              0
              • H Offline
                H Offline
                harshilsharma63
                wrote on last edited by
                #9

                [quote author="Dheerendra" date="1405751248"]No it is right. QFrame is derived from QWidget. It should be fine. I tried to create very similar UI using the designer. My *.h files did not had any qfame.h file. Can you check with small example first ? Which version of Qt you are using ?[/quote]

                I'm using Qt 5.3.1

                I tried creating a small sample in this way-

                1. Start Designer -> New -> Widgets -> QFrame -> create

                2. Added a few components like sliders etc.

                3. Form -> view code -> save the header file (ui_sadsad.h)

                4. Created a new Qt Widgets project in Creator and added the header file obtained from Designer to this project.

                5. In the auto-created ui file, added a Widget and promoted it to Ui_Sadsad.

                6. Built and got error in ui_mainwondow.h-

                @/********************************************************************************
                ** Form generated from reading UI file 'mainwindow.ui'
                **
                ** Created by: Qt User Interface Compiler version 5.3.1
                **
                ** WARNING! All changes made in this file will be lost when recompiling UI file!
                ********************************************************************************/

                #ifndef UI_MAINWINDOW_H
                #define UI_MAINWINDOW_H

                #include <QtCore/QVariant>
                #include <QtWidgets/QAction>
                #include <QtWidgets/QApplication>
                #include <QtWidgets/QButtonGroup>
                #include <QtWidgets/QHeaderView>
                #include <QtWidgets/QMainWindow>
                #include <QtWidgets/QMenuBar>
                #include <QtWidgets/QStatusBar>
                #include <QtWidgets/QToolBar>
                #include <QtWidgets/QWidget>
                #include "ui_frame.h" <-------------------------------------------- this is the problem

                QT_BEGIN_NAMESPACE

                class Ui_MainWindow
                {
                public:
                QWidget *centralWidget;
                Ui_Frame *widget;
                QMenuBar *menuBar;
                QToolBar *mainToolBar;
                QStatusBar *statusBar;

                void setupUi(QMainWindow *MainWindow)
                {
                    if (MainWindow->objectName().isEmpty())
                        MainWindow->setObjectName(QStringLiteral("MainWindow"));
                    MainWindow->resize(400, 300);
                    centralWidget = new QWidget(MainWindow);
                    centralWidget->setObjectName(QStringLiteral("centralWidget"));
                    widget = new Ui_Frame(centralWidget);
                    widget->setObjectName(QStringLiteral("widget"));
                    widget->setGeometry(QRect(60, 50, 120, 80));
                    MainWindow->setCentralWidget(centralWidget);
                    menuBar = new QMenuBar(MainWindow);
                    menuBar->setObjectName(QStringLiteral("menuBar"));
                    menuBar->setGeometry(QRect(0, 0, 400, 21));
                    MainWindow->setMenuBar(menuBar);
                    mainToolBar = new QToolBar(MainWindow);
                    mainToolBar->setObjectName(QStringLiteral("mainToolBar"));
                    MainWindow->addToolBar(Qt::TopToolBarArea, mainToolBar);
                    statusBar = new QStatusBar(MainWindow);
                    statusBar->setObjectName(QStringLiteral("statusBar"));
                    MainWindow->setStatusBar(statusBar);
                
                    retranslateUi(MainWindow);
                
                    QMetaObject::connectSlotsByName(MainWindow);
                } // setupUi
                
                void retranslateUi(QMainWindow *MainWindow)
                {
                    MainWindow->setWindowTitle(QApplication::translate("MainWindow", "MainWindow", 0));
                } // retranslateUi
                

                };

                namespace Ui {
                class MainWindow: public Ui_MainWindow {};
                } // namespace Ui

                QT_END_NAMESPACE

                #endif // UI_MAINWINDOW_H
                @

                I think stem 5 onwards I'm doinf it wrong.

                1 Reply Last reply
                0
                • H Offline
                  H Offline
                  harshilsharma63
                  wrote on last edited by
                  #10

                  Anyways, can you point me to the correct steps?

                  1 Reply Last reply
                  0
                  • dheerendraD Offline
                    dheerendraD Offline
                    dheerendra
                    Qt Champions 2022
                    wrote on last edited by
                    #11

                    oh!!!. ui_frame.h file generated file. Your designer class name frame. Hence it is generating ui_frame.h file. You can remove this and do what split you want to for .h and .cpp files.

                    Dheerendra
                    @Community Service
                    Certified Qt Specialist
                    http://www.pthinks.com

                    1 Reply Last reply
                    0
                    • H Offline
                      H Offline
                      harshilsharma63
                      wrote on last edited by
                      #12

                      [quote author="Dheerendra" date="1405755474"]oh!!!. ui_frame.h file generated file. Your designer class name frame. Hence it is generating ui_frame.h file. You can remove this and do what split you want to for .h and .cpp files.[/quote]

                      But then you have error in every line that refers to Ui_Frame like line 30 and 42. It's really irritating me.

                      1 Reply Last reply
                      0

                      • Login

                      • Login or register to search.
                      • First post
                        Last post
                      0
                      • Categories
                      • Recent
                      • Tags
                      • Popular
                      • Users
                      • Groups
                      • Search
                      • Get Qt Extensions
                      • Unsolved