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. Close button pressed signal in the QDockWidget

Close button pressed signal in the QDockWidget

Scheduled Pinned Locked Moved General and Desktop
17 Posts 3 Posters 14.3k Views
  • 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.
  • R Offline
    R Offline
    Ruzik
    wrote on last edited by
    #1

    How can get pointer to close button in the QDockWidget or get simular signal
    I need only pressed signal, not signal of the close or change of visible
    In advanced thank you for your help!

    1 Reply Last reply
    0
    • F Offline
      F Offline
      Franzk
      wrote on last edited by
      #2

      What do you want to achieve?

      "Horse sense is the thing a horse has which keeps it from betting on people." -- W.C. Fields

      http://www.catb.org/~esr/faqs/smart-questions.html

      1 Reply Last reply
      0
      • R Offline
        R Offline
        Ruzik
        wrote on last edited by
        #3

        !http://hostingkartinok.com/image/01201110/84f3a2809f59321c77e562c77b76341e.jpg(http://hostingkartinok.com/image/01201110/84f3a2809f59321c77e562c77b76341e.jpg)!
        I have QTabWidget, some widgets in this tabs, and QDockWidget in the QMainWindow. I want to unite QDockWidget with some of QWidget, and because of QMainWindow cant consist of QDockWidget, i need to have QDockWidget in the main window, but i need to QDockWidget be visible only when needed tab is active and if this QDockWidget dont closed by user
        I managed with 1 part(QDockWidget in the active tab), and i want to do 2 part(dont visible QDockWidget if user want it)

        1 Reply Last reply
        0
        • C Offline
          C Offline
          cincirin
          wrote on last edited by
          #4

          "QMainWindow::removeDockWidget":http://doc.qt.nokia.com/stable/qmainwindow.html#removeDockWidget is not good ?

          bq. Removes the dockwidget from the main window layout and hides it. Note that the dockwidget is not deleted.

          1 Reply Last reply
          0
          • R Offline
            R Offline
            Ruzik
            wrote on last edited by
            #5

            No, i dont remove QDockWidgte at all, i need to control changing of visible

            1 Reply Last reply
            0
            • C Offline
              C Offline
              cincirin
              wrote on last edited by
              #6

              Try something like this:
              @
              QAction dockWidgetAction = yourDockWidget->toggleViewAction();
              dockWidgetAction->toogle();
              @

              1 Reply Last reply
              0
              • R Offline
                R Offline
                Ruzik
                wrote on last edited by
                #7

                Thank you for your help!
                It is worked!

                1 Reply Last reply
                0
                • C Offline
                  C Offline
                  cincirin
                  wrote on last edited by
                  #8

                  You are welcome.
                  btw. nice virtual keyboard :-)

                  1 Reply Last reply
                  0
                  • R Offline
                    R Offline
                    Ruzik
                    wrote on last edited by
                    #9

                    If this is an allusion to agglomerate interface, it will be configured :-)

                    1 Reply Last reply
                    0
                    • R Offline
                      R Offline
                      Ruzik
                      wrote on last edited by
                      #10

                      I have one problem:
                      If user want to moved QDockWidget from QMainWindow to separate window: at first, widget become invisible and then redrawn as separate window
                      But how will I know when it is redrawn, and when the user closes it, if I get the same signals?

                      1 Reply Last reply
                      0
                      • R Offline
                        R Offline
                        Ruzik
                        wrote on last edited by
                        #11

                        My current code:
                        RMathDockWidget.h
                        @#ifndef RMATHDOCKWIDGET
                        #define RMATHDOCKWIDGET

                        #include "QDockWidget"

                        class RMathDockWidget : public QDockWidget
                        {
                        Q_OBJECT
                        public:
                        RMathDockWidget(QWidget *parent = 0, Qt::WFlags flags=0);
                        ~RMathDockWidget();
                        private:
                        bool localVisible;

                        QWidget * parentWidget;
                        public slots:
                        void setVisible(bool);
                        protected slots:
                        void checkedToVisible(bool);
                        };
                        #endif@
                        RMathDockWidget.cpp
                        @#include "RMathDockWidget.h"
                        #include "QDebug"
                        #include "QAction"
                        #include "Geter/Geter.h"

                        RMathDockWidget::RMathDockWidget(QWidget *parent, Qt::WFlags flags) : QDockWidget(parent,flags)
                        {
                        localVisible = true;
                        if(!parent)
                        {
                        qDebug() << "[Rizek message]Empty parent of RMathDockWidget!";
                        }
                        else
                        parentWidget = parent;

                        this->setMinimumWidth(120);
                        connect(parent, SIGNAL(activityChanged(bool)), this ,SLOT(setVisible(bool)));
                        connect(this, SIGNAL(visibilityChanged(bool)), this, SLOT(checkedToVisible(bool)));
                        this->setVisible(false);
                        }
                        RMathDockWidget::~RMathDockWidget()
                        {

                        }
                        void RMathDockWidget::setVisible(bool b)
                        {
                        //qDebug() << b << "!" << localVisible;
                        if (b && localVisible)
                        QDockWidget::setVisible(true);
                        else
                        QDockWidget::setVisible(false);
                        }
                        void RMathDockWidget::checkedToVisible(bool is)
                        {
                        qDebug() << is;
                        Geter g; //object for getting parent Window class
                        bool isParentWidgetVisible;
                        if(g.getRizekMath()->getTabWidget()->currentWidget() == parentWidget) //is current tab of tabWidget is active
                        isParentWidgetVisible = true;
                        else
                        isParentWidgetVisible = false;
                        if (isParentWidgetVisible)
                        localVisible = is;
                        }@

                        1 Reply Last reply
                        0
                        • R Offline
                          R Offline
                          Ruzik
                          wrote on last edited by
                          #12

                          Exactly, are there no any ways to get signal from QDockWidget/Close Button when user click to this button?

                          1 Reply Last reply
                          0
                          • R Offline
                            R Offline
                            Ruzik
                            wrote on last edited by
                            #13

                            Maybe, somehow we can determine when the widget becomes invisible due to the repainting, or when the user wanted it

                            1 Reply Last reply
                            0
                            • C Offline
                              C Offline
                              cincirin
                              wrote on last edited by
                              #14

                              Why you do not use "QAction::toggled":http://doc.qt.nokia.com/latest/qaction.html#toggled signal ?
                              @
                              QAction dockWidgetAction = yourDockWidget->toggleViewAction();
                              QObject::connect(dockWidgetAction, SIGNAL(toogled(bool)), yourClassPointer, SLOT(dockWidgetToogled(bool))
                              @

                              1 Reply Last reply
                              0
                              • R Offline
                                R Offline
                                Ruzik
                                wrote on last edited by
                                #15

                                Because, signal void QDockWidget::visibilityChanged ( bool visible ) simular it, and i use this signal
                                If i write it
                                @connect(this, SIGNAL(visibilityChanged(bool)), this, SLOT(checkedToVisible(bool)));@
                                instead of
                                @connect(dockWidgetAction, SIGNAL(toogled(bool)), yourClassPointer, SLOT(dockWidgetToogled(bool))@
                                There are no to change or i dont right?

                                1 Reply Last reply
                                0
                                • C Offline
                                  C Offline
                                  cincirin
                                  wrote on last edited by
                                  #16

                                  QDockWidget::visibilityChanged is fired

                                  bq. as well as when it is docked in a tabbed dock area and its tab becomes selected or unselected.

                                  I answered to
                                  [quote author="Ruzik" date="1320432125"]Exactly, are there no any ways to get signal from QDockWidget/Close Button when user click to this button?[/quote]

                                  1 Reply Last reply
                                  0
                                  • R Offline
                                    R Offline
                                    Ruzik
                                    wrote on last edited by
                                    #17

                                    It was my mistake - override setVisible()
                                    Once again thank you for your help!

                                    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