Как держать кнопки близко друг к другу (по горизонтали) в виджете Qt?

    QGridLayout *layout = new QGridLayout ();
    centralWidget->setLayout (layout);
    layout->addWidget (refresh, 0, 0);
    layout->addWidget (zoomIn, 1, 0);
    layout->addWidget (zoomOut, 1, 1);
    layout->addWidget (panLeft, 2, 0);
    layout->addWidget (panRight, 2, 1);
    layout->addWidget (panTop, 3, 0);
    layout->addWidget (panBottom, 3, 1);
    layout->addWidget (findInfo, 4, 0);
    layout->addWidget (textEdit, 5, 0);

    window->setCentralWidget (centralWidget);

введите здесь описание изображения


person Aquarius_Girl    schedule 26.09.2012    source источник
comment
Смотрите мой ответ ниже — можете ли вы добавить в свой код больше контекста? Какие фактические типы виджетов вы используете для кнопок? Добавляли ли вы какие-либо ограничения для виджетов? Можете ли вы опубликовать макет того, как должен выглядеть пользовательский интерфейс?   -  person Andreas Fester    schedule 26.09.2012


Ответы (1)


Думаю, нам нужно больше контекста. Я взял ваш код и обернул его в следующий полный образец приложения:

#include <QGridLayout>
#include <QPushButton>
#include <QTextEdit>
#include <QApplication>
#include <QMainWindow>

int main(int argc, char ** argv) {
    QApplication app( argc, argv );
    QMainWindow win;

    QWidget* centralWidget = new QWidget(&win);
    QPushButton* refresh = new QPushButton("Start R");
    QPushButton* zoomIn = new QPushButton("Zoom in");
    QPushButton* zoomOut = new QPushButton("Zoom out");
    QPushButton* panLeft = new QPushButton("Left");
    QPushButton* panRight = new QPushButton("Right");
    QPushButton* panTop = new QPushButton("Top");
    QPushButton* panBottom = new QPushButton("Bottom");
    QPushButton* findInfo = new QPushButton("Find Info");
    QTextEdit* textEdit = new QTextEdit("Vehicle Info. Will be shown here.");

///////////////////////////// Your Code
    QGridLayout *layout = new QGridLayout ();
    centralWidget->setLayout (layout);
    layout->addWidget (refresh, 0, 0);
    layout->addWidget (zoomIn, 1, 0);
    layout->addWidget (zoomOut, 1, 1);
    layout->addWidget (panLeft, 2, 0);
    layout->addWidget (panRight, 2, 1);
    layout->addWidget (panTop, 3, 0);
    layout->addWidget (panBottom, 3, 1);
    layout->addWidget (findInfo, 4, 0);
    layout->addWidget (textEdit, 5, 0);

    window->setCentralWidget (centralWidget);
///////////////////////////// End your code

    win.show();
    app.connect( &app, SIGNAL( lastWindowClosed() ), &app, SLOT( quit() ) );
    return app.exec();
}

В результате получается следующий макет:

Снимок экрана

Похоже, вы добавили некоторые ограничения по размеру кнопок, поскольку на скриншоте все они имеют одинаковый размер (кроме кнопки "Пуск").

person Andreas Fester    schedule 26.09.2012