Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

Vertical Scroll Bar to QVBoxLayout



  • Hi,
    I am new in Qt. I want to set scrollbar to the QVBoxLayout. I have added the following code.

    1. setGeometry(0, 0, 240, 320);
    2. QWidget *win = new QWidget();
    3. setCentralWidget(win);
    4. QVBoxLayout *verBoxLayout= new QVBoxLayout(win);
    5. QLabel *lbl=new QLabel(tr("Test"));
    6. verBoxLayout->addWidget(lbl);

    My question is that how to add a vertical scrollbar to the Vertical Layout and make it visible all time.


  • Qt Champions 2019

    You need to use a QScrollArea instead a QWidget as central widget.



  • Hi @Rumzi , use QScrollArea, set the QWidget to it and then set the QScrollArea as centralWidget.

    Here is the sample code:-

    setGeometry(0, 0, 240, 320);
    QWidget *window = new QWidget(this);
    
    QVBoxLayout *vBoxLayout= new QVBoxLayout(window);
    
    for (int i = 0; i < 20; i++)
    {
        QLabel *label=new QLabel(tr("Test ") + QString::number(i));
        vBoxLayout->addWidget(label);
    }
    
    QScrollArea *scrollArea = new QScrollArea(this);
    scrollArea->setWidget(window);
    setCentralWidget(scrollArea);
    

    Sample Output:-

    0_1560232586030_489b7600-46c6-494b-8047-4c617637b166-image.png

    For more information about QScrollArea[https://doc.qt.io/qt-5/qscrollarea.html]



  • @Shrinidhi-Upadhyaya , thanks bro. it's worked absolutely fine. I need another help to resize the scrollbar width.



  • Hi @Rumzi

    You can use setStyleSheet();
    Reference: Qt Style Sheets.

    Example:

        QScrollArea *scrollArea = new QScrollArea(this);
    
        scrollArea->setStyleSheet("QScrollBar:vertical { "
                                  "width: 25px; " // Change as per your requirement
                                  "}");
    
    

    0_1560839842179_8.png


Log in to reply