Qt creator i okno dialogowe

0

Cześć!
Próbowałem długo znaleźć informację na ten temat, jednak nie udało mi się. Stworzyłem w Qt creatorze klasę formularza dialog.cpp, nie wiem jednak, co zrobić, żeby współpracowało ono z klasą MainWindow? Próbowałem różnych sposobów, w tym umieszczać obiekt Dialog jako zmienną klasy MainWindow, jednak to chyba nie to. W szczególności, nie mogę dojść do tego, jak uzyskać dostęp do zmiennych klasy MainWindow z poziomu klasy Dialog?
Proszę o pomoc

Piotr

0

Sprawdz PW.

0

Sądząc po tym temacie jak i Twoich wcześniejszych nie znasz podstaw OOP. Żeby sprawnie poruszać się po Qt z OOP musisz być za pan brat.

0

Podstawy OOP znam ale rzeczywiście gubię się jeśli chodzi o QT creatora.
Stworzyłem okno dialogowe newitem. Teraz po kliknięciu w przycisk w oknie głównym wywołuje się funkcja:

void MainWindow::NewItem()
{
newitem *dial =new newitem(this);
dial->show();
} 

Pokazuje się okno, uzytkownik wpisuje dane, i problem w tym, jak przekazać te dane do obiektu w klasie MainWindow?

0
Anthus napisał(a)

Podstawy OOP znam ale ...
Pokazuje się okno, uzytkownik wpisuje dane, i problem w tym, jak przekazać te dane do obiektu w klasie MainWindow?

Cóż,to pokazuje Bracie,że jednak tak nie do końca znasz :P
Anyway,odnośnie Twojego pytania,jest na to na przykład taki sposób:
1.Delkarujesz w dialogu przyjaźń z klasą okna które będzie go tworzyło i pokazywało
2.Kiedy użytkownik kliknie w ok pobierasz dane z Ui dialogu.Ja stosuję taką konstrukcję:

MyDialog *d=new MyDialog(this);//this niekonieczny
d->setWidgetAttribute(Qt::WA_DeleteOnClose);//to spowoduje automatyczne delete na dialogu po jego zamknięciu
if(d->exec()==QDialog::Accepted)//user kliknął OK,Tak czy coś podobnego
{
      //tu się dzieje co ma się dziać na kliknięcie ok,u Ciebie to będzie coś w stylu:
      //(zakładając,że okno dialogu zbudowałeś w designerze jak Swaróg przykazał i masz plik Ui)
      //jak nie masz,to z poniższych instrukcji wyrzuć frazę ui.
      d->ui.label1->text();
      d->ui.comboBox1->itemText(0);
      itd...
      return;
}
//a tutaj coś to się dzieje po wciśnięciu czegokolwiek innego niż ok

Z poziomu designera tworzysz 2 guziki-Ok i Cancel,po czym przełączasz tryb designera na połączenia sygnał slot i łączysz Ok(clicked) z YourDialog(accept) a Cancel(clicked) z YourDialog(reject)

0

Dziękuję Master :) właśnie kluczowa dla mnie była ta trzecia linijka.

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