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

Close button pressed signal in the QDockWidget

Scheduled Pinned Locked Moved General and Desktop
17 Posts 3 Posters 14.4k 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.
  • 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