Проблема кажется простой, но я не решил ее за 2 часа. У меня есть этот макет:
QGridLayout* view = new QGridLayout(this);
view->setSpacing(15);
view->addWidget(x0,2,1);
view->addWidget(x1,1,1);
view->addWidget(keyboard,2,0);
view->addWidget(x2,1,0);
view->addWidget(draw,0,0,0,1);
resize ( 650,650);
this->setLayout(view);
Мне нужно, чтобы «рисование» (графическая часть проекта) занимало верхнюю часть проекта (строка 0, столбец 0 — столбец 1).
Проблема в том, что какое бы значение я ни указывал в конструкторе:
void QGridLayout :: addWidget (QWidget * widget, int fromRow, fromColumn int, int rowSpan, columnSpan int, Qt :: Alignment alignment = 0)
Все остальные виджеты заблокированы, и я не могу взаимодействовать, когда моя программа работает.
С классическим конструктором
void QGridLayout :: addWidget (QWidget * widget, int row, int column, Qt :: Alignment alignment = 0)
Нет проблем, но виджет «рисовать» не там, где я хочу (только 1 столбец вместо 2).
Кто-нибудь знает, где я делаю это неправильно?
PS: виджеты не имеют настроек макета (кроме цифровой клавиатуры, чтобы зафиксировать минимальную высоту клавиш).
диапазон строк является буквальным, а не индексным, как переменная. Если вы хотите поместить 2 столбца / диапазон строк, вы должны указать значение 2 в параметрах span. Так что вам нужно изменить это view->addWidget(draw,0,0,0,1);
в view->addWidget(draw,0,0,1,2);
, Диапазон строк / столбцов, равный 1, будет включать только «из строки / столбца», а не «из строки / столбца + 1»
Других решений пока нет …