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

multiple inheritance

Scheduled Pinned Locked Moved Unsolved General and Desktop
13 Posts 5 Posters 962 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.
  • JonBJ JonB

    @Natural_Bugger said in multiple inheritance:

    class CustomButton : public QPushButton, public QThread

    How does it make sense to create an object which inherits from a QPushButton and from QThread?

    I do not see any connection. Keep any threading quite separate.

    N Offline
    N Offline
    Natural_Bugger
    wrote on last edited by
    #3

    @JonB

    well, i wanna try to give that button some properties.
    i need to access the button properties.
    just trying some stuff.

    what do you suggest?

    JonBJ 1 Reply Last reply
    0
    • N Natural_Bugger

      @JonB

      well, i wanna try to give that button some properties.
      i need to access the button properties.
      just trying some stuff.

      what do you suggest?

      JonBJ Online
      JonBJ Online
      JonB
      wrote on last edited by JonB
      #4

      @Natural_Bugger
      It's difficult to know, because I have no idea what you are thinking of conceptually....

      Why are you going anywhere near threads at all? They add a lot of complexity, what use case do you have here for threads?

      how do i make random numbers appear on the button every x time?

      Maybe use a QTimer to change the text on the button over time??

      Or, if you really, really have a thread generating random numbers all the time and you want to display them, use the pattern that the worker thread raises signals with the desired number/text and the main UI thread has a slot for the signal which updates whatever on the UI.

      N 1 Reply Last reply
      0
      • B Offline
        B Offline
        Bonnie
        wrote on last edited by
        #5

        Well, just want to say that multiple inheritance of classes which inherit QObject is not allowed.

        JonBJ 1 Reply Last reply
        2
        • JonBJ JonB

          @Natural_Bugger
          It's difficult to know, because I have no idea what you are thinking of conceptually....

          Why are you going anywhere near threads at all? They add a lot of complexity, what use case do you have here for threads?

          how do i make random numbers appear on the button every x time?

          Maybe use a QTimer to change the text on the button over time??

          Or, if you really, really have a thread generating random numbers all the time and you want to display them, use the pattern that the worker thread raises signals with the desired number/text and the main UI thread has a slot for the signal which updates whatever on the UI.

          N Offline
          N Offline
          Natural_Bugger
          wrote on last edited by
          #6

          @JonB

          i would like to make the button fall at a rate of 9.81 pixels per second and if i lift it up again.
          so my guess: is that my button needs to check autonomously where it resides.

          JonBJ 1 Reply Last reply
          0
          • B Bonnie

            Well, just want to say that multiple inheritance of classes which inherit QObject is not allowed.

            JonBJ Online
            JonBJ Online
            JonB
            wrote on last edited by
            #7

            @Bonnie raises a good point: you cannot inherit twice from anything inheriting from QObject. So you won't get class CustomButton : public QPushButton, public QThread to work anyway, which is just as well! :)

            1 Reply Last reply
            0
            • N Natural_Bugger

              @JonB

              i would like to make the button fall at a rate of 9.81 pixels per second and if i lift it up again.
              so my guess: is that my button needs to check autonomously where it resides.

              JonBJ Online
              JonBJ Online
              JonB
              wrote on last edited by
              #8

              @Natural_Bugger said in multiple inheritance:

              i would like to make the button fall at a rate of 9.81 pixels per second and if i lift it up again.

              Not that I know what this means, but it sounds like you want a 1-second repeating QTimer in which you do some update to the UI?

              N 1 Reply Last reply
              0
              • N Natural_Bugger

                i would like to add the Thread class to my customButton class

                thread-basics

                custombutton.h file

                #ifndef CUSTOMBUTTON_H
                #define CUSTOMBUTTON_H
                
                #include <QPushButton>
                #include <QThread>
                
                class CustomButton : public QPushButton, public QThread
                {
                public:
                    CustomButton( const QString& text, QWidget* parent = 0 );
                
                    // Enhancement, it will reverse the button text
                    void reverseText();
                private:
                    void run();
                };
                
                #endif // CUSTOMBUTTON_H
                
                

                customButton.cpp file

                #include "CustomButton.h"
                #include "algorithm"
                #include <QDebug>
                #include "CustomButton.h"
                #include "algorithm"
                #include <QDebug>
                #include <QApplication>
                
                CustomButton::CustomButton( const QString& text, QWidget* parent )
                    : QPushButton( text, parent )
                {
                    //this->set
                    const QSize btnSize = QSize(150, 150);
                    this->setFixedSize(btnSize);
                    this->move(1000, 10);
                
                }
                
                void CustomButton::reverseText()
                {
                    QString buttonText = text();
                    std::reverse(buttonText.begin(), buttonText.end());
                    setText( buttonText );
                }
                
                void CustomButton::run(){
                    int randomNumber = rand();
                    setText(  QString::number(randomNumber) );
                }
                
                

                main.cpp

                .
                ..
                ...
                CustomButton *mybutton = new CustomButton( QString::number(size.width()) + " abc " + QString::number(size.height()));
                    mybutton->show();
                    mybutton->start(); // <---
                    mybutton->reverseText();
                ...
                ..
                .
                

                how do i make random numbers appear on the button every x time?

                if you comment out:

                //mybutton->start();
                

                the "run" method doesn't get executed.

                does the thread class only apply to private methods?

                J.HilkJ Offline
                J.HilkJ Offline
                J.Hilk
                Moderators
                wrote on last edited by
                #9

                @Natural_Bugger I'm surprised this compiled

                https://doc.qt.io/qt-5/moc.html#multiple-inheritance-requires-qobject-to-be-first

                Inheriting from multiple QObjects is not allowed/supported


                Be aware of the Qt Code of Conduct, when posting : https://forum.qt.io/topic/113070/qt-code-of-conduct


                Q: What's that?
                A: It's blue light.
                Q: What does it do?
                A: It turns blue.

                N 1 Reply Last reply
                0
                • J.HilkJ J.Hilk

                  @Natural_Bugger I'm surprised this compiled

                  https://doc.qt.io/qt-5/moc.html#multiple-inheritance-requires-qobject-to-be-first

                  Inheriting from multiple QObjects is not allowed/supported

                  N Offline
                  N Offline
                  Natural_Bugger
                  wrote on last edited by
                  #10

                  @J-Hilk

                  it actually runs.

                  mybutton->start(); // <---
                  

                  if i comment out "mybutton->start(); // <---", the run function doesn't work, otherwise it does.

                  1 Reply Last reply
                  0
                  • JonBJ JonB

                    @Natural_Bugger said in multiple inheritance:

                    i would like to make the button fall at a rate of 9.81 pixels per second and if i lift it up again.

                    Not that I know what this means, but it sounds like you want a 1-second repeating QTimer in which you do some update to the UI?

                    N Offline
                    N Offline
                    Natural_Bugger
                    wrote on last edited by
                    #11

                    @JonB

                    it's just an experiment.
                    trying to give the button some "life"

                    JonBJ 1 Reply Last reply
                    0
                    • N Natural_Bugger

                      @JonB

                      it's just an experiment.
                      trying to give the button some "life"

                      JonBJ Online
                      JonBJ Online
                      JonB
                      wrote on last edited by
                      #12

                      @Natural_Bugger
                      Well, it's the wrong experiment! Conceptually widgets and threads have nothing to do with each other. What's wrong with a QTimer, which sounds like all you are looking for?

                      1 Reply Last reply
                      4
                      • mrjjM Offline
                        mrjjM Offline
                        mrjj
                        Lifetime Qt Champion
                        wrote on last edited by
                        #13

                        Hi
                        For such animations, you can also use
                        https://doc.qt.io/qt-5/qpropertyanimation.html

                        1 Reply Last reply
                        4

                        • Login

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