W swojej aplikacji próbuję zastosować dynamiczne usuwanie i dodawanie obiektów Qt w trakcie działania. Jednak po usunięciu nieużywanych obiektów (przez operator delete oraz usunięcie wskaźników na nie z Vectora w mainwindow), i dodaniu nowych w ich miejsce (przez operator new oraz dodanie wskaźników do Vectora w mainwindow), elementy zostają usunięte i przestają być widoczne, to pomimo użycia funkcji update lub repaint, nowe obiekty nie pojawiają się na ekranie (mimo że są oznaczone jako dzieci mainwindow). Na innych forach i w dokumentacji nie byłem w stanie znaleźć rozwiązania.
Tak wygląda kod funkcji która ma dokonać modyfikacji elementów
void game_menu(MainWindow *window){
window->delete_elements();
create_game_menu(window);
window->update();
}
Funkcja odpowiedzialna za usunięcie elementów z vectora Mainwindow:
void MainWindow::delete_elements(){
for (unsigned int i=0; i<elements.size();i++){
delete elements[i];
}
elements.clear();
}
Oraz funkcja która dodaje elementy do Vectora mainwidnow:
void create_game_menu(MainWindow *window){
//Tworzy elementy menu gry
QLabel *content=new QLabel(window);
content->setGeometry(50,300,300,100);
window->add_element(content);
window->mark_content(content);
Menu_Label *game, *host_game, *main_menu;
game= new Menu_Label(window,"Stwórz grę",content,"Utwórz grę z komputerem-hostem",start_game);
game->setGeometry(20, 40, 100, 20);
window->add_element(game);
host_game= new Menu_Label(window,"Graj",content,"Stwórz grę gdzie gracz jest hostem",start_host_game);
host_game->setGeometry(20, 80, 100, 20);
window->add_element(host_game);
main_menu= new Menu_Label(window,"Powrót",content,"Powrót do menu głównego",back_to_menu);
main_menu->setGeometry(20, 120, 100, 20);
window->add_element(main_menu);
}
Nie mam zbyt dużego doświadczenia w Qt, więc być może to jakieś trywialne błędy, ale nie jestem w stanie ich wychwycić. Prosiłbym o pomoc i wyjaśnienie