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.
  • 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