Witam serdecznie, piszę mały projekt w Qt i napotkałem pewien problem, mianowicie:
posiadam pewną klasę "MainItem", w której implementuję między innymi dwie metody niemodyfikujące klasy oraz zwracające stałe referencje do pól tejże klasy:
class MainItem {
public:
(...)
const QDateTime& from() const { return dtFrom; }
const QDateTime& to() const { return dtTo; }
private:
QDateTime dtFrom;
QDateTime dtTo;
(...)
};
klasa ta jest dużo bardziej rozbudowana jednak pozostałe jej składowe nie mają wpływu w tej kwestii.
Pobieram obiekt powyższej klasy z QTableView (obecnie zaznaczony w tabeli) przy pomocy napisanej przeze mnie metody.
MainItem* selectedRow() const;
Działa ona dobrze gdyż używam jej bezproblemowo w innych miejscach w programie, więc nie będę podawał jej implementacji.
Próbuję utworzyć QDialog'a, który posiada między innymi konstruktor przedstawiony poniżej:
explicit HoursForm(const QDateTime&, const QDateTime&, QWidget *parent = 0);
Następnie tworzę go w pewnej metodzie (głównej klasy programu) i wywołuje tenże konstruktor:
void MainWindow::_slEdit()
{
MainItem* item = mainItemTableView->selectedRow();
Q_CHECK_PTR(item);
HoursForm hoursForm(item->from(), item->to(), this);
(...)
}
Jednak argumenty przekazane do konstruktora (czyli item->from(), oraz item->to()) są w nim "niedostępne"(debugger: <not available="available">) co w praktyce wygląda tak, że przechowują one jakieś śmieciowe dane i nie mam pojęcia dlaczego. Sprawdzałem przy pomocy debuggera dołączonego do QtCreatora zawartość tych obiektów i do momentu utworzenia "HoursForm" dokładniej jeszcze przed nim wskaźnik "item" oraz elementy na jakie wskazuje przechowują prawidłowe dane, natomiast wewnątrz konstruktora dane te nie są już prawidłowe. Czy mógłbym w związku z tym prosić was o podanie możliwych powodów takiego zachowania? Za wszelkie odpowiedzi będę bardzo wdzięczny.
pozdrawiam.