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. Dialog UI and heritage
Forum Updated to NodeBB v4.3 + New Features

Dialog UI and heritage

Scheduled Pinned Locked Moved Solved General and Desktop
ui and heritage
14 Posts 4 Posters 4.2k Views 2 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.
  • mrjjM Offline
    mrjjM Offline
    mrjj
    Lifetime Qt Champion
    wrote on last edited by
    #4

    the implementation of your function must be in the .cpp file.

    so where you call ui -> dateEdit -> setDate( QDate::currentDate());
    should be in a .cpp file and not .h

    Is it in .cpp?

    cfdevC 1 Reply Last reply
    0
    • mrjjM mrjj

      the implementation of your function must be in the .cpp file.

      so where you call ui -> dateEdit -> setDate( QDate::currentDate());
      should be in a .cpp file and not .h

      Is it in .cpp?

      cfdevC Offline
      cfdevC Offline
      cfdev
      wrote on last edited by
      #5

      @mrjj Yes, not in header file

      mrjjM 1 Reply Last reply
      0
      • cfdevC cfdev

        @mrjj Yes, not in header file

        mrjjM Offline
        mrjjM Offline
        mrjj
        Lifetime Qt Champion
        wrote on last edited by
        #6

        @cfdev
        ok, so not that error.
        Well, I have not tried to move it to protected.
        I can try it a bit later and see :)

        1 Reply Last reply
        0
        • cfdevC cfdev

          Hi Sorry if this question is too simple :)

          I have an class
          namespace Ui { class DialogInvoiceList; }
          class DialogInvoiceList : public QDialog { ...}

          I want to create an other class from DialogInvoiceList
          class DialogPurchase : public DialogInvoiceList

          Here it's ok, but How to access to ui functions in my DialogPurchase class?
          ui -> dateEdit -> setDate( QDate::currentDate());

          J Offline
          J Offline
          Jakob
          wrote on last edited by
          #7

          @cfdev How did you embed Ui::DialogInvoiceList into your DialogInvoiceList? In your example the ui-class is nowhere!

          Anyways, if you wanted to create a hierarchy of classes that derive from your ui-class, then the logical thing I'd do:

          namespace Ui { class DialogInvoiceList; }
          
          class DialogInvoiceList: protected DialogInvoiceList, public QDialog
          {
              Q_OBJECT
          public:
              explicit DialogInvoiceList(QWidget* parent) 
                  : QDialog(parent)
              {
                  setupUi(this);
              }
          }
          
          class DialogPurchase : protected DialogInvoiceList
          {
              Q_OBJECT
          public:
              explicit DialogPurchase(QWidget* parent)
                  : DialogInvoiceList(parent)
              {}
          }
          

          I haven't tested, but I'm almost certain you can now access anything in the ui class directly, i.e. a member checkbox can be accessed directly in the DialogPurchase class.

          cfdevC 1 Reply Last reply
          1
          • J Offline
            J Offline
            Jakob
            wrote on last edited by
            #8

            @cfdev To be more precize, you'd use the 'Multiple Inheritance' approach described here http://doc.qt.io/qt-5/designer-using-a-ui-file.html#the-multiple-inheritance-approach

            1 Reply Last reply
            1
            • J Jakob

              @cfdev How did you embed Ui::DialogInvoiceList into your DialogInvoiceList? In your example the ui-class is nowhere!

              Anyways, if you wanted to create a hierarchy of classes that derive from your ui-class, then the logical thing I'd do:

              namespace Ui { class DialogInvoiceList; }
              
              class DialogInvoiceList: protected DialogInvoiceList, public QDialog
              {
                  Q_OBJECT
              public:
                  explicit DialogInvoiceList(QWidget* parent) 
                      : QDialog(parent)
                  {
                      setupUi(this);
                  }
              }
              
              class DialogPurchase : protected DialogInvoiceList
              {
                  Q_OBJECT
              public:
                  explicit DialogPurchase(QWidget* parent)
                      : DialogInvoiceList(parent)
                  {}
              }
              

              I haven't tested, but I'm almost certain you can now access anything in the ui class directly, i.e. a member checkbox can be accessed directly in the DialogPurchase class.

              cfdevC Offline
              cfdevC Offline
              cfdev
              wrote on last edited by
              #9

              @Jakob If I use this code, I've some error 'inaccessible' :

              D:\code\qt\4.8.7\src\gui\dialogs\qdialog.h:90: error: 'void QDialog::setModal(bool)' is inaccessible void setModal(bool modal);

              D:\code\mcercle-trunk\src\mainwindow.cpp:323: error: 'QDialog' is not an accessible base of 'DialogPurchase'
              ...

              PS: What is the markdown code to use the syntax color ?!

              1 Reply Last reply
              0
              • cfdevC Offline
                cfdevC Offline
                cfdev
                wrote on last edited by
                #10

                It's ok like this:

                namespace Ui { class DialogInvoiceList; }

                class DialogInvoiceList: public QDialog, protected Ui::DialogInvoiceList
                {
                Q_OBJECT
                public:
                explicit DialogInvoiceList(QWidget* parent)
                : QDialog(parent)
                {
                setupUi(this);
                }
                }

                class DialogPurchase : public DialogInvoiceList
                {
                Q_OBJECT
                public:
                explicit DialogPurchase(QWidget* parent)
                : DialogInvoiceList(parent)
                {}
                }

                Many Thanks ;)

                J 3 Replies Last reply
                1
                • cfdevC cfdev

                  It's ok like this:

                  namespace Ui { class DialogInvoiceList; }

                  class DialogInvoiceList: public QDialog, protected Ui::DialogInvoiceList
                  {
                  Q_OBJECT
                  public:
                  explicit DialogInvoiceList(QWidget* parent)
                  : QDialog(parent)
                  {
                  setupUi(this);
                  }
                  }

                  class DialogPurchase : public DialogInvoiceList
                  {
                  Q_OBJECT
                  public:
                  explicit DialogPurchase(QWidget* parent)
                  : DialogInvoiceList(parent)
                  {}
                  }

                  Many Thanks ;)

                  J Offline
                  J Offline
                  Jakob
                  wrote on last edited by
                  #11

                  @cfdev Aaahhh, of course, that actually rings some bells somewhere in the back of my head. I think I read somewhere that if you use multiple inheritance, the QObject-derived class must be the first in the list. This has something to do with the moc compiler I think.

                  You get the syntax highlighted using a single backtick for inline highlighting and backtick plus return for a code block.

                  1 Reply Last reply
                  0
                  • cfdevC cfdev

                    It's ok like this:

                    namespace Ui { class DialogInvoiceList; }

                    class DialogInvoiceList: public QDialog, protected Ui::DialogInvoiceList
                    {
                    Q_OBJECT
                    public:
                    explicit DialogInvoiceList(QWidget* parent)
                    : QDialog(parent)
                    {
                    setupUi(this);
                    }
                    }

                    class DialogPurchase : public DialogInvoiceList
                    {
                    Q_OBJECT
                    public:
                    explicit DialogPurchase(QWidget* parent)
                    : DialogInvoiceList(parent)
                    {}
                    }

                    Many Thanks ;)

                    J Offline
                    J Offline
                    Jakob
                    wrote on last edited by
                    #12

                    @cfdev Btw, please remember to mark as 'Solved' using the 'Topic Tools' at the bottom right corner of the topic thread.

                    1 Reply Last reply
                    1
                    • cfdevC cfdev

                      It's ok like this:

                      namespace Ui { class DialogInvoiceList; }

                      class DialogInvoiceList: public QDialog, protected Ui::DialogInvoiceList
                      {
                      Q_OBJECT
                      public:
                      explicit DialogInvoiceList(QWidget* parent)
                      : QDialog(parent)
                      {
                      setupUi(this);
                      }
                      }

                      class DialogPurchase : public DialogInvoiceList
                      {
                      Q_OBJECT
                      public:
                      explicit DialogPurchase(QWidget* parent)
                      : DialogInvoiceList(parent)
                      {}
                      }

                      Many Thanks ;)

                      J Offline
                      J Offline
                      Jakob
                      wrote on last edited by
                      #13

                      @cfdev Damn browser cache, never mind the remark as marking as 'Solved' - you already did .......

                      1 Reply Last reply
                      0
                      • SGaistS Offline
                        SGaistS Offline
                        SGaist
                        Lifetime Qt Champion
                        wrote on last edited by
                        #14

                        Hi,

                        Just a side note, you have now a "Code" button with </> as an icon to help you write code blocks

                        Interested in AI ? www.idiap.ch
                        Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                        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