QPushButton won't top align in QGridLayout



  • I have a QVBoxLayout that contains a top-aligned QLineEdit and a top-aligned QWidget with the layout set as a QGridLayout. I then programmatically add top-aligned QPushButtons to the QGridLayout depending on user input. This all works, but the problem I'm having is that the QPushButton does not top-align in the QGridLayout. Here's some code snippets I'm hoping will help.

    Main Layout

    this->m_filterBox = new QLineEdit(tr(""));
    this->m_filterBox->setPlaceholderText(tr("Filter"));
    connect(m_filterBox, &QLineEdit::textChanged, this, &CMainWindow::filterChanged);
    QVBoxLayout *layout = new QVBoxLayout();
    layout->addWidget(m_filterBox);
    layout->setAlignment(this->m_filterBox, Qt::AlignTop);
    this->m_keyGrid = new QGridLayout();
    QWidget *gridWidget = new QWidget();
    gridWidget->setLayout(this->m_keyGrid);
    layout->addWidget(gridWidget);
    layout->setAlignment(gridWidget, Qt::AlignTop);
    QWidget *window = new QWidget(this);
    window->setLayout(layout);
    this->setCentralWidget(window);
    

    Adding buttons

    int row = 0;
    int column = 0;
    for(std::vector<QString>::iterator it = this->m_vecStrings.begin(); it != this->m_vecStrings.end(); ++it) {
        QString input = *it;
        QPushButton *button = new QPushButton(input);
        this->m_keyGrid->addWidget(button, row, column, 1, 1, Qt::AlignTop);
        column++;
        if (column > 2) {
            row++;
            column = 0;
        }
    }
    

    Any insight is appreciated. Here's a screenshot of what I'm getting for more information
    Screenshot



  • So you want the pushbuttons right beneath the lineEdit? See this

    "If the stretch factor is 0 and nothing else in the QBoxLayout has a stretch factor greater than zero, the space is distributed according to the QWidget:sizePolicy() of each widget that's involved.

    The alignment is specified by alignment. The default alignment is 0, which means that the widget fills the entire cell."
    http://doc.qt.io/qt-5/qboxlayout.html

    Let me know if that helps

    EDIT: Also, have a look at http://doc.qt.io/qt-5/qlayout.html#spacing-prop

    Maybe you can try setting the spacing of the rows to be small so that the buttons appear near top



  • Thanks @MaxDevI, that worked perfectly!


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.