Возможно, имя обманчиво, но QVBoxLayout - это не сетка. Это вертикальный макет коробки. Это означает, что предполагается размещать ваши элементы сверху вниз в порядке их добавления.
Так что вы на самом деле хотите QGridLayout. Если вы посмотрите документацию для этого типа макета, вы увидите следующие функции:
void addWidget ( QWidget * widget, int row, int column, Qt::Alignment alignment = 0 )
void addWidget ( QWidget * widget, int fromRow, int fromColumn, int rowSpan, int columnSpan, Qt::Alignment alignment = 0 )
Это должно позволить вам размещать ваши виджеты в любом месте в сетке.
Таким образом, код, который я добавил ниже, поместит deviceLBL и targetLBL в первой строке, deviceHeadingLBL и targetHeadingLBL во второй строке, и просто для удовольствия, distanceLBL в третьей строке, но занимая 2 столбца места.
QGridLayout *layout = new QGridLayout ();
layout->addWidget(deviceLBL, 0, 0);
layout->addWidget(targetLBL, 0, 1);
layout->addWidget(deviceHeadingLBL, 1, 0);
layout->addWidget(targetHeadingLBL, 1, 1);
layout->addWidget(distanceLBL, 2, 0, 1, 2);
Что должно выглядеть так: