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. Access and inheritance
Forum Updated to NodeBB v4.3 + New Features

Access and inheritance

Scheduled Pinned Locked Moved Solved General and Desktop
49 Posts 5 Posters 11.9k Views 4 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.
  • M mrjj
    10 Feb 2019, 17:47

    @tomy
    Well im not sure what he meant by that since its just a QMenu in any case.

    So what does it have now ?

    Im not sure why using event would be more sophisticated. Its just other way
    of having a context menu.

    T Offline
    T Offline
    tomy
    wrote on 10 Feb 2019, 18:11 last edited by
    #17

    @mrjj

    So what does it have now ?

    this:

    0_1549822272949_Capture.PNG

    M 1 Reply Last reply 10 Feb 2019, 18:18
    0
    • T tomy
      10 Feb 2019, 18:11

      @mrjj

      So what does it have now ?

      this:

      0_1549822272949_Capture.PNG

      M Offline
      M Offline
      mrjj
      Lifetime Qt Champion
      wrote on 10 Feb 2019, 18:18 last edited by
      #18

      @tomy
      Hi
      Is that build from code or a default one ?
      I mean is there code to build it and show it ?

      T 1 Reply Last reply 10 Feb 2019, 18:24
      0
      • M mrjj
        10 Feb 2019, 18:18

        @tomy
        Hi
        Is that build from code or a default one ?
        I mean is there code to build it and show it ?

        T Offline
        T Offline
        tomy
        wrote on 10 Feb 2019, 18:24 last edited by
        #19

        @mrjj Hi,
        Yes. The book also shows the code for that.
        I know I can add more options to that, for instance, to have five buttons in the context menu rather than that three ones. But by the sentence the author said, I though there should be another way to have a more advanced context menu by re-implementing the virtual protected method when mentioned earlier.

        By the way, don't you have that book?

        M 1 Reply Last reply 10 Feb 2019, 18:29
        0
        • T tomy
          10 Feb 2019, 18:24

          @mrjj Hi,
          Yes. The book also shows the code for that.
          I know I can add more options to that, for instance, to have five buttons in the context menu rather than that three ones. But by the sentence the author said, I though there should be another way to have a more advanced context menu by re-implementing the virtual protected method when mentioned earlier.

          By the way, don't you have that book?

          M Offline
          M Offline
          mrjj
          Lifetime Qt Champion
          wrote on 10 Feb 2019, 18:29 last edited by
          #20

          @tomy
          Hi
          Well the menu already have both shortcut and icon so not sure what else could be added.
          There is no "more advanced" menu possible by overwriting contextMenuEvent as
          you can just 100% the same just altering
          void MainWindow::createActions()
          to show what you want.

          yes, i have it as PDF. did read most of it way back.

          T 1 Reply Last reply 12 Feb 2019, 08:32
          2
          • M mrjj
            10 Feb 2019, 18:29

            @tomy
            Hi
            Well the menu already have both shortcut and icon so not sure what else could be added.
            There is no "more advanced" menu possible by overwriting contextMenuEvent as
            you can just 100% the same just altering
            void MainWindow::createActions()
            to show what you want.

            yes, i have it as PDF. did read most of it way back.

            T Offline
            T Offline
            tomy
            wrote on 12 Feb 2019, 08:32 last edited by
            #21

            @mrjj

            Thank you very much. I was too much stuck in a QML program's problem, sorry for the delay.

            If you run the program, even by the latest version of Qt Creator and on a sophisticated and fancy operating system like Windows 10, you see the program still looks old, as though we are in 2000 using it.
            Is it because of the code? If so, what parts can be updated, please?

            M J 2 Replies Last reply 12 Feb 2019, 08:43
            0
            • T tomy
              12 Feb 2019, 08:32

              @mrjj

              Thank you very much. I was too much stuck in a QML program's problem, sorry for the delay.

              If you run the program, even by the latest version of Qt Creator and on a sophisticated and fancy operating system like Windows 10, you see the program still looks old, as though we are in 2000 using it.
              Is it because of the code? If so, what parts can be updated, please?

              M Offline
              M Offline
              mrjj
              Lifetime Qt Champion
              wrote on 12 Feb 2019, 08:43 last edited by
              #22

              @tomy
              Hi
              Nope its just how the QWidgets look.
              If you change the icons to flat style,
              it will look more "modern"

              You could use something like
              https://github.com/laserpants/qt-material-widgets
              if you want to go all in for "modern" look.

              T 1 Reply Last reply 13 Feb 2019, 09:16
              2
              • T tomy
                12 Feb 2019, 08:32

                @mrjj

                Thank you very much. I was too much stuck in a QML program's problem, sorry for the delay.

                If you run the program, even by the latest version of Qt Creator and on a sophisticated and fancy operating system like Windows 10, you see the program still looks old, as though we are in 2000 using it.
                Is it because of the code? If so, what parts can be updated, please?

                J Offline
                J Offline
                jsulm
                Lifetime Qt Champion
                wrote on 12 Feb 2019, 09:27 last edited by
                #23

                @tomy Do you use Qt4 or Qt5?

                https://forum.qt.io/topic/113070/qt-code-of-conduct

                T 1 Reply Last reply 12 Feb 2019, 11:45
                0
                • J jsulm
                  12 Feb 2019, 09:27

                  @tomy Do you use Qt4 or Qt5?

                  T Offline
                  T Offline
                  tomy
                  wrote on 12 Feb 2019, 11:45 last edited by
                  #24

                  @jsulm
                  It's 5.12. The latest version I think.

                  1 Reply Last reply
                  0
                  • M mrjj
                    10 Feb 2019, 10:40

                    @tomy
                    hi
                    well its MainWindow as a subclass of QMainWindow
                    The names are so close its sometimes confusing.
                    The truth is, if a base class do not do anything in its constructor, nothing bad will happen not calling it.
                    Which seems why they didnt bother here for MainWindow

                    K Offline
                    K Offline
                    kshegunov
                    Moderators
                    wrote on 12 Feb 2019, 13:27 last edited by kshegunov 2 Dec 2019, 13:32
                    #25

                    @mrjj said in Access and inheritance:

                    The truth is, if a base class do not do anything in its constructor, nothing bad will happen not calling it.

                    Just for completeness:
                    If the base class has a default constructor, and it's not called explicitly in the derived class' constructor the compiler is going to generate code to call it implicitly. Omitting it in the initializer list means nothing here, as QMainWindow() is going to be called either way. If the base class does not have a default constructor, and there's no call to the parent's constructor then this is going to generate a compile error, as the compiler has no idea what to do.

                    Read and abide by the Qt Code of Conduct

                    T 1 Reply Last reply 12 Feb 2019, 14:01
                    4
                    • K kshegunov
                      12 Feb 2019, 13:27

                      @mrjj said in Access and inheritance:

                      The truth is, if a base class do not do anything in its constructor, nothing bad will happen not calling it.

                      Just for completeness:
                      If the base class has a default constructor, and it's not called explicitly in the derived class' constructor the compiler is going to generate code to call it implicitly. Omitting it in the initializer list means nothing here, as QMainWindow() is going to be called either way. If the base class does not have a default constructor, and there's no call to the parent's constructor then this is going to generate a compile error, as the compiler has no idea what to do.

                      T Offline
                      T Offline
                      tomy
                      wrote on 12 Feb 2019, 14:01 last edited by
                      #26

                      @kshegunov
                      Hi,

                      If the base class has a default constructor, and it's not called explicitly in the derived class' constructor the compiler is going to generate code to call it implicitly. Omitting it in the initializer list means nothing here, as QMainWindow() is going to be called either way.

                      Is it true for the Qt Creator compiler too? (I think so)

                      If the base class does not have a default constructor, and there's no call to the parent's constructor then this is going to generate a compile error, as the compiler has no idea what to do.

                      Can we conclude this way that, when the base class doesn't have a constructor, in either way, whether the subclass calls the parent's constructor (!) or it doesn't, we will get an error?

                      K 1 Reply Last reply 12 Feb 2019, 16:05
                      0
                      • T tomy
                        12 Feb 2019, 14:01

                        @kshegunov
                        Hi,

                        If the base class has a default constructor, and it's not called explicitly in the derived class' constructor the compiler is going to generate code to call it implicitly. Omitting it in the initializer list means nothing here, as QMainWindow() is going to be called either way.

                        Is it true for the Qt Creator compiler too? (I think so)

                        If the base class does not have a default constructor, and there's no call to the parent's constructor then this is going to generate a compile error, as the compiler has no idea what to do.

                        Can we conclude this way that, when the base class doesn't have a constructor, in either way, whether the subclass calls the parent's constructor (!) or it doesn't, we will get an error?

                        K Offline
                        K Offline
                        kshegunov
                        Moderators
                        wrote on 12 Feb 2019, 16:05 last edited by
                        #27

                        @tomy said in Access and inheritance:

                        Is it true for the Qt Creator compiler too? (I think so)

                        Qt Creator is not a compiler, it uses some compiler (whatever you've configured), but yes, it's true for all compiler, as this is standard (and required) behaviour for C++.

                        Can we conclude this way that, when the base class doesn't have a constructor, in either way, whether the subclass calls the parent's constructor (!) or it doesn't, we will get an error?

                        No. Not defining a class constructor means the compiler generates a default one for you (unless specifically told otherwise). If you haven't defined a constructor in the base class, then the derived class is going to implicitly call the automatically generated one.

                        Read and abide by the Qt Code of Conduct

                        T 1 Reply Last reply 12 Feb 2019, 18:58
                        3
                        • K kshegunov
                          12 Feb 2019, 16:05

                          @tomy said in Access and inheritance:

                          Is it true for the Qt Creator compiler too? (I think so)

                          Qt Creator is not a compiler, it uses some compiler (whatever you've configured), but yes, it's true for all compiler, as this is standard (and required) behaviour for C++.

                          Can we conclude this way that, when the base class doesn't have a constructor, in either way, whether the subclass calls the parent's constructor (!) or it doesn't, we will get an error?

                          No. Not defining a class constructor means the compiler generates a default one for you (unless specifically told otherwise). If you haven't defined a constructor in the base class, then the derived class is going to implicitly call the automatically generated one.

                          T Offline
                          T Offline
                          tomy
                          wrote on 12 Feb 2019, 18:58 last edited by
                          #28

                          @kshegunov

                          So we will never have to call the base class's constructor from the subclass, because if there is an explicit constructor for the base class, the compiler calls (implicitly) for us (with the absence of an explicit call from us), and if there is no constructor for the base class, the compiler creates a default one and implicitly calls that in the subclass. Hence, we had better never involve ourselves with calling a base class's constructor directly (from the subclass)! :) :)

                          M K 2 Replies Last reply 12 Feb 2019, 19:02
                          0
                          • T tomy
                            12 Feb 2019, 18:58

                            @kshegunov

                            So we will never have to call the base class's constructor from the subclass, because if there is an explicit constructor for the base class, the compiler calls (implicitly) for us (with the absence of an explicit call from us), and if there is no constructor for the base class, the compiler creates a default one and implicitly calls that in the subclass. Hence, we had better never involve ourselves with calling a base class's constructor directly (from the subclass)! :) :)

                            M Offline
                            M Offline
                            mrjj
                            Lifetime Qt Champion
                            wrote on 12 Feb 2019, 19:02 last edited by mrjj 2 Dec 2019, 19:02
                            #29

                            @tomy
                            Hi
                            The automatic version is only for a default constructor.
                            As soon as base class constructor takes parameters, it must be called from subclass as compiler cannot
                            know how to obtain the parameters to give to base class.
                            However the compiler will tell you that.

                            1 Reply Last reply
                            3
                            • T tomy
                              12 Feb 2019, 18:58

                              @kshegunov

                              So we will never have to call the base class's constructor from the subclass, because if there is an explicit constructor for the base class, the compiler calls (implicitly) for us (with the absence of an explicit call from us), and if there is no constructor for the base class, the compiler creates a default one and implicitly calls that in the subclass. Hence, we had better never involve ourselves with calling a base class's constructor directly (from the subclass)! :) :)

                              K Offline
                              K Offline
                              kshegunov
                              Moderators
                              wrote on 12 Feb 2019, 19:39 last edited by
                              #30

                              What @mrjj said, plus the moment you define a constructor, the compiler stops generating for you. Thus if you define a constructor with parameters, the compiler will not generate a default constructor for you. Beautiful system, right? :)

                              Read and abide by the Qt Code of Conduct

                              T 1 Reply Last reply 17 Feb 2019, 07:51
                              3
                              • M mrjj
                                12 Feb 2019, 08:43

                                @tomy
                                Hi
                                Nope its just how the QWidgets look.
                                If you change the icons to flat style,
                                it will look more "modern"

                                You could use something like
                                https://github.com/laserpants/qt-material-widgets
                                if you want to go all in for "modern" look.

                                T Offline
                                T Offline
                                tomy
                                wrote on 13 Feb 2019, 09:16 last edited by
                                #31

                                @mrjj

                                If you change the icons to flat style, it will look more "modern"

                                Hi,
                                The example you posted look very modern and stylish, but too advanced for me now. Thank you.
                                I like to go step by step. So for the icons, I must download some "flat .png related files" from the Internet and substitute the old ones with these. Right?

                                M 1 Reply Last reply 13 Feb 2019, 09:58
                                0
                                • T tomy
                                  13 Feb 2019, 09:16

                                  @mrjj

                                  If you change the icons to flat style, it will look more "modern"

                                  Hi,
                                  The example you posted look very modern and stylish, but too advanced for me now. Thank you.
                                  I like to go step by step. So for the icons, I must download some "flat .png related files" from the Internet and substitute the old ones with these. Right?

                                  M Offline
                                  M Offline
                                  mrjj
                                  Lifetime Qt Champion
                                  wrote on 13 Feb 2019, 09:58 last edited by
                                  #32

                                  @tomy
                                  Hi
                                  Yes, that could be the first step.
                                  Maybe a bit of stylesheet to make QToolbar more flat to fit the new icons.
                                  I dont have an image of spreadsheet app around so im not sure what else you can
                                  do currently. will write of get any other ideas.

                                  1 Reply Last reply
                                  1
                                  • K kshegunov
                                    12 Feb 2019, 19:39

                                    What @mrjj said, plus the moment you define a constructor, the compiler stops generating for you. Thus if you define a constructor with parameters, the compiler will not generate a default constructor for you. Beautiful system, right? :)

                                    T Offline
                                    T Offline
                                    tomy
                                    wrote on 17 Feb 2019, 07:51 last edited by
                                    #33

                                    @kshegunov

                                    Beautiful system, right? :)

                                    Right. :)

                                    @mrjj

                                    Yes, that could be the first step.
                                    Maybe a bit of stylesheet to make QToolbar more flat to fit the new icons.
                                    I dont have an image of spreadsheet app around so im not sure what else you can
                                    do currently. will write of get any other ideas.

                                    Hi, Thanks. So I need to lookup "stylesheet".

                                    M 1 Reply Last reply 17 Feb 2019, 08:26
                                    0
                                    • T tomy
                                      17 Feb 2019, 07:51

                                      @kshegunov

                                      Beautiful system, right? :)

                                      Right. :)

                                      @mrjj

                                      Yes, that could be the first step.
                                      Maybe a bit of stylesheet to make QToolbar more flat to fit the new icons.
                                      I dont have an image of spreadsheet app around so im not sure what else you can
                                      do currently. will write of get any other ideas.

                                      Hi, Thanks. So I need to lookup "stylesheet".

                                      M Offline
                                      M Offline
                                      mrjj
                                      Lifetime Qt Champion
                                      wrote on 17 Feb 2019, 08:26 last edited by
                                      #34

                                      @tomy

                                      Hi
                                      https://doc.qt.io/qt-5/stylesheet.html

                                      T 2 Replies Last reply 17 Feb 2019, 09:30
                                      1
                                      • M mrjj
                                        17 Feb 2019, 08:26

                                        @tomy

                                        Hi
                                        https://doc.qt.io/qt-5/stylesheet.html

                                        T Offline
                                        T Offline
                                        tomy
                                        wrote on 17 Feb 2019, 09:30 last edited by
                                        #35

                                        @mrjj
                                        Thanks to you. :)

                                        1 Reply Last reply
                                        0
                                        • M mrjj
                                          17 Feb 2019, 08:26

                                          @tomy

                                          Hi
                                          https://doc.qt.io/qt-5/stylesheet.html

                                          T Offline
                                          T Offline
                                          tomy
                                          wrote on 18 Feb 2019, 11:07 last edited by
                                          #36

                                          @mrjj Hi,

                                          I created a new project called MySpreadsheet and added a few more options to the context menu and renewed the icons to flat ones.
                                          Now when I run the project, it runs normally, but when we close it, the follwoing message is written in the Application Output window:

                                          Starting D:\Projects\Qt\MySpreadsheet\MySpreadsheet\build-MySpreadsheet-Desktop_Qt_5_12_0_MinGW_64_bit-Debug\debug\MySpreadsheet.exe...
                                          FTH: (243752): *** Fault tolerant heap shim applied to current process. This is usually due to previous crashes. ***
                                          The program has unexpectedly finished.
                                          The process was ended forcefully.
                                          D:/Projects/Qt/MySpreadsheet/MySpreadsheet/build-MySpreadsheet-Desktop_Qt_5_12_0_MinGW_64_bit-Debug/debug/MySpreadsheet.exe crashed.

                                          What is the problem please?
                                          Is it not related to the .pro file, please?

                                          J 1 Reply Last reply 18 Feb 2019, 14:11
                                          0

                                          26/49

                                          12 Feb 2019, 14:01

                                          • Login

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