Перетащить виджет в другой layout
Привет. Как правильно переносить виджеты из одного лэйаута в другой? Есть несколько виджетов, в каждом из них свой лэйаут, нужно перетаскивать элементы из одного виджета в другой. Минимальный пример тут: https://github.com/twentypercentcooler/qtlayouts Проблема вот в чем - все нормально перетаскивается, но потом все ломается. Чтобы сломалось нужно - перетаскивать внутри одного виджета, потом перетащить в другой, а потом снова перетаскивать внутри первого. Должно получиться то, что на картинке в гитхабе. Тестировал на винде и линуксе, Qt5.4.
dropEvent, emptycolorwidget.cpp:
if (de->source() == this) {
return;
}
EmptyColorWidget *v = qobject_cast<EmptyColorWidget *>(de->source());
if (v != nullptr) {
de->acceptProposedAction();
emit swap(v, this);
return;
}
void multiscreen::swap(EmptyColorWidget *v1, EmptyColorWidget *v2)
{
if (v1 == nullptr || v2 == nullptr) {
qDebug() << "widget is null";
return;
}
auto pos1 = v1->getPosition();
auto pos2 = v2->getPosition();
auto gw1 = grid_widgets[pos1.display_number];
auto gw2 = grid_widgets[pos2.display_number];
gw2->remove(v2);
gw1->remove(v1);
gw2->add(v1, pos2);
gw1->add(v2, pos1);
v2->savePosition(pos1);
v1->savePosition(pos2);
}