Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-87133

QSplitter does not consider QSizePolicy::Maximum policy

    XMLWordPrintable

Details

    • Bug
    • Resolution: Done
    • P2: Important
    • None
    • 5.15
    • None
    • All
    • c3fd24164b062de3d874b43c6c807245248c2042 (qt/qtbase/dev)

    Description

      QSplitter ignores QSizePolicy::Maximum (or rather lack of QSizePolicy::GrowFlag) in computing initial sizes as well as in resizing. It does take QWidget::maximumSize, although that is more cumbersome as it is not a virtual method/property.

       

      #include <QApplication>
      #include <QSplitter>
      #include <QFrame>
      
      class Frame: public QFrame {
      public:
          Frame() {
              setFrameStyle(QFrame::StyledPanel);
          }
      
          QSize sizeHint() const override {
              return QSize(100, 100);
          }
      };
      
      
      int main(int argc, char *argv[])
      {
          QApplication a(argc, argv);
          QSplitter splitter(Qt::Horizontal);
          Frame *f1 = new Frame();
          Frame *f2 = new Frame();
          Frame *f3 = new Frame();
      
          f2->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Ignored);
      
      //    f2->setMaximumWidth(100);
      
          splitter.addWidget(f1);
          splitter.addWidget(f2);
          splitter.addWidget(f3);
          splitter.resize(500, 200);
          splitter.show();
          return a.exec();
      }
      

       
      The attached screenshot pairs show a initial splitter layout with `QSizePolicy::Maximum` only, and one with `setMaximumWith(100)`. The other pair show the splitter layout after dragging the second handle to the right. With `setMaximumWidth`, the middle portion does not grow, but with `QSizePolicy::Maximum` only it does.

      Attachments

        1. qsplitter-grow-policy.zip
          1 kB
          Ales Erjavec
        2. splitter-initial.png
          163 kB
          Ales Erjavec
        3. splitter-after-handle-drag-right.png
          164 kB
          Ales Erjavec
        4. splitter-initial-maxsize.png
          164 kB
          Ales Erjavec
        5. splitter-after-handle-drag-righ-maxsize.png
          164 kB
          Ales Erjavec
        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

        Activity

          People

            qt.team.quick.subscriptions Qt Quick and Widgets Team
            aleserjavec Ales Erjavec
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes