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
Qt 6.11 is out! See what's new in the release blog

multiple inheritance

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