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. Capture DoubleClick on QTabBar
Forum Updated to NodeBB v4.3 + New Features

Capture DoubleClick on QTabBar

Scheduled Pinned Locked Moved Solved General and Desktop
16 Posts 3 Posters 5.5k Views 3 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 mrjj

    @cerr
    hi
    Use this function to get the tab
    http://doc.qt.io/qt-4.8/qtabwidget.html#widget

    Can you show me how you define
    tabBarDoubleClicked ?

    cerrC Offline
    cerrC Offline
    cerr
    wrote on last edited by
    #7

    @mrjj said in Capture DoubleClick on QTabBar:

    @cerr
    hi
    Use this function to get the tab
    http://doc.qt.io/qt-4.8/qtabwidget.html#widget

    Can you show me how you define
    tabBarDoubleClicked ?

    I hadn't defined it at all but noew added it under

    signals:
        void tabBarDoubleClicked(int index);
    

    which still doesn't seem to be right, I now refer to it like:
    ```
    connect(QTabWidget::widget(tabIndex), SIGNAL(&QTabBar::tabBarDoubleClicked(sessionId)),
    this, SLOT(SessionStack::editTabLabel(sessionId)));

    and get this in the shell:
    

    No such signal Splitter::&QTabBar::tabBarDoubleClicked(sessionId)

    How do I make it link to the correct function/signal? :o
    cerrC 1 Reply Last reply
    0
    • cerrC cerr

      @mrjj said in Capture DoubleClick on QTabBar:

      @cerr
      hi
      Use this function to get the tab
      http://doc.qt.io/qt-4.8/qtabwidget.html#widget

      Can you show me how you define
      tabBarDoubleClicked ?

      I hadn't defined it at all but noew added it under

      signals:
          void tabBarDoubleClicked(int index);
      

      which still doesn't seem to be right, I now refer to it like:
      ```
      connect(QTabWidget::widget(tabIndex), SIGNAL(&QTabBar::tabBarDoubleClicked(sessionId)),
      this, SLOT(SessionStack::editTabLabel(sessionId)));

      and get this in the shell:
      

      No such signal Splitter::&QTabBar::tabBarDoubleClicked(sessionId)

      How do I make it link to the correct function/signal? :o
      cerrC Offline
      cerrC Offline
      cerr
      wrote on last edited by cerr
      #8

      @mrjj said in Capture DoubleClick on QTabBar:

      @cerr
      hi
      Use this function to get the tab
      http://doc.qt.io/qt-4.8/qtabwidget.html#widget

      Can you show me how you define
      tabBarDoubleClicked ?

      I hadn't defined it at all but noew added it under

      signals:
          void tabBarDoubleClicked(int index);
      

      which still doesn't seem to be right, I now refer to it like:

      connect(QTabWidget::widget(tabIndex), SIGNAL(&QTabBar::tabBarDoubleClicked(sessionId)),
        this, SLOT(SessionStack::editTabLabel(sessionId)));
      

      and get this in the shell:

      No such signal Splitter::&QTabBar::tabBarDoubleClicked(sessionId)
      

      How do I get rid of Splitter:: and make it link to the correct function/signal? :o

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

        Hi
        First of all the signal:
        signals:
        void tabBarDoubleClicked(int index);

        In which class did you put it?
        You seems to say its the Tab. Is this correct? The signal is defined in Tab class ?

        Also, the syntax seems off. You are mixing syntaxes again.

        connect(QTabWidget::widget(tabIndex), SIGNAL(&QTabBar::tabBarDoubleClicked(sessionId)),
        this, SLOT(SessionStack::editTabLabel(sessionId)));

        try
        with
        QWidget *TheTab= ui->THEQTabWidget->widget(tabIndex);
        qDebug() << " con :" connect( TheTab , SIGNAL(tabBarDoubleClicked(sessionId) ), this, SLOT(editTabLabel(sessionId) );

        it should say "con : true "

        cerrC 1 Reply Last reply
        0
        • mrjjM mrjj

          Hi
          First of all the signal:
          signals:
          void tabBarDoubleClicked(int index);

          In which class did you put it?
          You seems to say its the Tab. Is this correct? The signal is defined in Tab class ?

          Also, the syntax seems off. You are mixing syntaxes again.

          connect(QTabWidget::widget(tabIndex), SIGNAL(&QTabBar::tabBarDoubleClicked(sessionId)),
          this, SLOT(SessionStack::editTabLabel(sessionId)));

          try
          with
          QWidget *TheTab= ui->THEQTabWidget->widget(tabIndex);
          qDebug() << " con :" connect( TheTab , SIGNAL(tabBarDoubleClicked(sessionId) ), this, SLOT(editTabLabel(sessionId) );

          it should say "con : true "

          cerrC Offline
          cerrC Offline
          cerr
          wrote on last edited by
          #10

          @mrjj
          I now have:

          QWidget *tabWidget = QTabWidget::widget(tabIndex);
              connect(tabWidget, SIGNAL(tabBarDoubleClicked(sessionId)),this, SLOT(SessionStack::editTabLabel(sessionId)));
          

          where

          signals:	
           void tabBarDoubleClicked(int index);
          

          is declared in

          class SessionStack : public QTabWidget
          

          but I get this on the shell:

          QObject::connect: No such signal Splitter::tabBarDoubleClicked(sessionId)
          

          I don't exacltly understand where it gets the reference to Splitter:: from. There is a class that looks like:

          class Session;
          
          class Splitter: public QSplitter
          {
              Q_OBJECT
          
              public:
                  explicit Splitter(Qt::Orientation orientation, Session* session, QWidget* parent);
                  ~Splitter();
                  Session* session();
          
                  void recursiveCleanup();
              private:
                  Session *m_session;
          };
          

          but QSplitter has no DoubleClicked signal.

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

            Hi
            Clean the build folder and run qmake again

            seems it remembers the bad syntax where you used
            &Splitter::tabBarDoubleClicked(sessionId)

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

              Also something else:

              you say:
              signals:
              void tabBarDoubleClicked(int index);
              is declared in class SessionStack : public QTabWidget

              but when you connect to say its in the tabWidget

              QWidget *tabWidget = QTabWidget::widget(tabIndex);
              connect(tabWidget, SIGNAL(tabBarDoubleClicked(sessionId)),this, SLOT(SessionStack::editTabLabel(sessionId)));

              here u say that tabWidget has the signal. Which seems NOT correct?

              and please stop using SessionStack:: with SLOT macro.
              Might still work, but NOT correct.

              • SLOT(editTabLabel(sessionId)));

              cerrC 1 Reply Last reply
              0
              • mrjjM mrjj

                Also something else:

                you say:
                signals:
                void tabBarDoubleClicked(int index);
                is declared in class SessionStack : public QTabWidget

                but when you connect to say its in the tabWidget

                QWidget *tabWidget = QTabWidget::widget(tabIndex);
                connect(tabWidget, SIGNAL(tabBarDoubleClicked(sessionId)),this, SLOT(SessionStack::editTabLabel(sessionId)));

                here u say that tabWidget has the signal. Which seems NOT correct?

                and please stop using SessionStack:: with SLOT macro.
                Might still work, but NOT correct.

                • SLOT(editTabLabel(sessionId)));

                cerrC Offline
                cerrC Offline
                cerr
                wrote on last edited by
                #13

                @mrjj

                I deleted all files within build/, re-ran cmake and recompiled but still get:
                QObject::connect: No such signal Splitter::tabBarDoubleClicked(sessionId)

                I have now removed the declaration for tabBarDoubleClicked from class SessionStack - do I need it there? As it should come directly from QTabWidget, should it not?

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

                  Hi,

                  Because Splitter::tabBarDoubleClicked(sessionId) is wrong. You don't pass a variable to the connect statement, you pass the parameter type.

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

                  mrjjM 1 Reply Last reply
                  2
                  • SGaistS SGaist

                    Hi,

                    Because Splitter::tabBarDoubleClicked(sessionId) is wrong. You don't pass a variable to the connect statement, you pass the parameter type.

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

                    @SGaist
                    Good catch :)

                    it should be
                    connect(this, SIGNAL(tabBarDoubleClicked(int)),this, SLOT(editTabLabel(int)));

                    • I have now removed the declaration for tabBarDoubleClicked from class SessionStack - do I need it there? As it should come directly from QTabWidget, should it not?

                    I went and looked at doc for TabBar.
                    http://doc.qt.io/qt-5/qtabbar.html#tabBarDoubleClicked
                    It is indeed the bar that sends the db click.
                    i thought it was a custom signal. sorry about that.
                    So it is pretty simple
                    (inside SessionStack )
                    qDebug() << "con:" << connect(this, SIGNAL(tabBarDoubleClicked(int)),this, SLOT(editTabLabel(int)));

                    that should do it. Check it says true.

                    cerrC 1 Reply Last reply
                    1
                    • mrjjM mrjj

                      @SGaist
                      Good catch :)

                      it should be
                      connect(this, SIGNAL(tabBarDoubleClicked(int)),this, SLOT(editTabLabel(int)));

                      • I have now removed the declaration for tabBarDoubleClicked from class SessionStack - do I need it there? As it should come directly from QTabWidget, should it not?

                      I went and looked at doc for TabBar.
                      http://doc.qt.io/qt-5/qtabbar.html#tabBarDoubleClicked
                      It is indeed the bar that sends the db click.
                      i thought it was a custom signal. sorry about that.
                      So it is pretty simple
                      (inside SessionStack )
                      qDebug() << "con:" << connect(this, SIGNAL(tabBarDoubleClicked(int)),this, SLOT(editTabLabel(int)));

                      that should do it. Check it says true.

                      cerrC Offline
                      cerrC Offline
                      cerr
                      wrote on last edited by
                      #16

                      @mrjj
                      Oh yeah! Wow, cool!
                      Thank you for helping the newbie!!! Much appreciated!

                      1 Reply Last reply
                      1

                      • Login

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