[Qt] Dostęp do modelu z innej klasy

0

Cześć, chciałbym aby model w którym przechowuje dane był dostępny dla wszystkich metod w dwóch innych klasach. Nie bardzo wiem jak to zrobić, póki co mam klasę mainWindow z QStandardItemModel *model w pliku .h, a w cpp robię:

mainWindow::mainWindow() {
   model = new QStandardItemModel(3,5,this);
   Klasa1 *widget = new Klasa1(model);
  setCentralWidget(widget);
}

Klasa mainWindow dziedziczy po QMainWindow, natomiast klasa1 i klasa2 po QWidget. Po prostu zależnie od wybranej opcji wymianiam wnętrze okna. Konstruktor klasy1 wygląda tak:

 Klasa1::Klasa1(QStandardItemModel *model) {
  tabela = new QTableView(this);
  tabela->setModel(model);
}

Niby ok, tylko właśnie jak chcę teraz np. pobrać w innej metodzie tej klasy dane z modelu to nie mam do niego dostępu. Da się to jakoś ładnie rozwiązać?

0

Wskaźnik na QStandardItemModel, jako składowa tych klas. W konstruktorze przypisujesz do niego model.

0

Faktycznie, nie pomyślałem. Dzięki.

0

Mam jeszcze jedno pytanie, związane bardziej z c++, niż tą biblioteką.
Potrzebuje wywołać teraz w metodzie klasy2, metodę z mainWindow, ale bez tworzenia nowego obiektu tej klasy, tylko do odwołania się do istniejącego. Da się coś takiego zrobić?

0

Można na przykład użyć Sygnału i Slotu:)

0

Ok, zrobiłem sygnał w klasie2 i dałem w metodzie:

emit updateTable(liczby.count()+1);

A w konstruktorze mainWindow dodałem:

connect(widget,SIGNAL(updateTable(int)),this,SLOT(updateColumn(int)));

I działa, w sumie jestem dość początkujący w pisaniu pod tą bibliotekę, więc jak da się lepiej to chętnie się dowiem. Dzięki za pomoc.

1 użytkowników online, w tym zalogowanych: 0, gości: 1