Виджет, содержащийся более чем в одной ячейке в 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 );
Возможно, вам придется немного поэкспериментировать с выравниванием.
Кроме того, вы можете взглянуть на этот пример, который демонстрирует, как растянуть кнопку на две строки и два столбца.