Виджет, содержащийся более чем в одной ячейке в QGridLayout, не центрируется

Вопрос в этом все.

У меня есть сетка 5 х 3.

Это выглядит так

row 0:  buttonA--buttonA--buttonA   nothing   buttonB--buttonB--buttonB

row 1:  empty row

row 2:  buttonC  nothing  buttonD   nothing   buttonE  nothing  buttonF     

В тех местах, где во всем столбце или строке ничего нет, будет работать минимальная высота и все эти параметры. Правильно?

Что ж. Кнопка A и кнопка B (и остальные) никогда не центрируются над теми 3 ячейками, которые они разделяют. НИКОГДА. не имеет значения, что я пишу на параметры для макета.

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

Что не работает, так это при добавлении виджета, используя:

addWidget (виджет, 0,0, 2,0, Qt::AlignHCenter); даже AlignCenter не работает.

Как сделать так, чтобы оно было отцентрировано или выровнено вправо?

Спасибо!

1 ответ

Решение

Синтаксис QGridLayout::addWidget() выглядит следующим образом:

void QGridLayout:: addWidget (виджет QWidget *, int fromRow, int fromColumn, int rowSpan, int columnSpan, Qt:: Alignment alignment = 0)

с описанием:

Эта версия добавляет данный виджет в сетку ячеек, охватывающую несколько строк / столбцов. Ячейка начнется с fromRow, fromColumn, охватывающего строки rowSpan и столбцы columnSpan.

Это означает, что ваша линия

addWidget( widget, 0, 0, 2, 0, Qt::AlignHCenter ); 

имеет fromRow = 0, fromColumn = 0, rowSpan = 2 а также columnSpan = 0, Это означает, что он начинается со строки 0 и охватывает две строки, то есть он будет в строках 0 и 1 (Примечание: всего две строки, а не две дополнительные строки). Также он начинается со столбца 0 с диапазоном 0, что, я думаю, означает, что диапазон столбцов игнорируется.

Так что вы действительно хотите:

addWidget( widget, 0, 0, 0, 3, Qt::AlignCenter );

Возможно, вам придется немного поэкспериментировать с выравниванием.

Кроме того, вы можете взглянуть на этот пример, который демонстрирует, как растянуть кнопку на две строки и два столбца.

Другие вопросы по тегам