Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. Polish
  4. Dziedziczenie po MainWindow
Forum Updated to NodeBB v4.3 + New Features

Dziedziczenie po MainWindow

Scheduled Pinned Locked Moved Polish
5 Posts 2 Posters 3.5k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • P Offline
    P Offline
    pol102
    wrote on last edited by
    #1

    Nie wiem na ile dobrze umiem określić problem. Dużo problemów rozwiązałem sam, czytając dokumentację. Kilka banałów rozwiązałem dzięki poradom otrzymanym na tym forum. Posługuję się tym IDE całkiem sprawnie jak na moje potrzeby. Doszedłem wczorajszej nocy do problemu dziedziczenia. Mam 2 okna - jedno Main i jeden Dialog. W pliku nagłówkowym zdefiniowalem sobie pewną przydatną funkcję void Ciach();, operacje jakie wykonuję są zdefiniowane standardowo jak książka pisze void MainWindow::Ciach { }
    Funkcja ta korzysta z danych pozyskiwanych z QLineEdit (w oknie głównym), ale jest na tyle dobrze napisana, że chciałbym korzystać z wyników jej pracy w moim dialogu. Gdy pisałem aplikacje konsolowe nie miałem kłopotu z dziedziczeniem, niestety w tym przypadku gdzie mam do czynienia z GUI leżę i kwiczę. Niby można ratować się zmiennymi globalnymi ale to bez sensu. Gdyby ktoś chciał mi to wytłumaczyć łopatologicznie byłbym wdzięczny.

    1 Reply Last reply
    0
    • sierdzioS Offline
      sierdzioS Offline
      sierdzio
      Moderators
      wrote on last edited by
      #2

      Najpierw potrzebuję wyjaśnienia: chcesz użyć wyniku jaki zwraca Ciach (ok, nic nie zwraca, ale zmienia stan objektu), chcesz wykorzystać samą funkcję (kod) w swoim dialogu. Podejrzewam to drugie, ale jakoś nie jestem pewien z opisu.

      Z dziedziczeniem QObjectów jest trochę nietypowo, bo nie da się dziedziczyć od dwóch QObjektów naraz. Np:
      @
      class Test: public QLineEdit, public QComboBox
      // nie przejdzie
      @

      Jeśli chesz mieć ::ciach() dostępne w dialogu i oknie głównym, musisz umieścić tę funkcję w innej klasie, nie dziedziczącej QObject. Może to wymagać pewnych przeróbek kodu, ale z reguły daje się zrobić. Przykład:
      @
      class GuiHelper {
      public:
      void ciach(QObject *obj) {
      obj->doStuff(); // itd.
      }
      };

      class TwojDialog: QDialog, GuiHelper {
      // ...
      @

      To tylko jeden ze sposobów, jak chcesz to inne też podam.

      (Z(:^

      1 Reply Last reply
      0
      • P Offline
        P Offline
        pol102
        wrote on last edited by
        #3

        void MainWindow::Ciach(){

        int indexList = ui->WyjazdytableView->selectionModel()->currentIndex().row();
        }

        Jest to dla mnie o tyle ważne, że w tableView mam komplet danych, on_clicked() otwiera Dialog, w którym mam podgląd 'wizualny' układu dokumentu, który będzie po akceptacji drukowany. W Dialogu potrzebuje tylko część danych więc albo zmienne globalne albo coś dziedziczyć po czymś.

        1 Reply Last reply
        0
        • sierdzioS Offline
          sierdzioS Offline
          sierdzio
          Moderators
          wrote on last edited by
          #4

          Dodaj do klasy dialogu zmienną, np "uiData". Natępnie w MainWindow::on_clicked() zainicjuj dialog i ustaw tę zmienną.

          (Z(:^

          1 Reply Last reply
          0
          • P Offline
            P Offline
            pol102
            wrote on last edited by
            #5

            Mimo wszystko prosiłbym o wzorcow przykład bo nijak nie potrafię tego dokonać. W akcie desperacji próbowałem również patentu z Singleton'em(opisany tutaj: http://www.win32prog.republika.pl/ebook/qtkurs.pdf) również ze słabym skutkiem...

            1 Reply Last reply
            0

            • Login

            • Login or register to search.
            • First post
              Last post
            0
            • Categories
            • Recent
            • Tags
            • Popular
            • Users
            • Groups
            • Search
            • Get Qt Extensions
            • Unsolved