Qt több űrlapos alkalmazás

Qt több űrlapos alkalmazás
2010-03-21T21:34:35+01:00
2010-03-24T00:10:23+01:00
2022-07-19T12:10:28+02:00
k_zoli
Sziasztok!

Kezdő vagyok Qt-ben (szabadidőmet ütöm el vele pár hete) és tulajdonképpen kliens oldalra is nagyon rég dolgoztam.

Adott egy alkalmazás fő ablaka melyen van egy menü, a menüpontokhoz különböző űrlapok tartoznak.

Arra lenne szükségem, hogy külön formon (pl:partnerek.ui,jogosultsagok.ui) lehessen szerkeszteni az aktuális űrlapot és az a főform centralWidgetjén lévő tabWidget egy új fülén jelenjen meg a menüből történő kiválasztás esetén.
Az eseménykezelés az megy azt már átlátom, de egy új formot sehogy sem tudok rávenni arra, hogy az hol jelenjen meg.

Hogy kell ezt elérni ?

Qt Creator 1.3.0, Qt 4.6
Mutasd a teljes hozzászólást!
Mutasd a teljes hozzászólást!

  • Az insertTab működik, de nem tudom hogy hivatkozzak arra widgetre amelyik nincs rajta azon a formon amelyiken a tab van.
    Igy hoztam létre a widgettet: Forms->add News->Qt Designer Form->widget->next...
    Így lett egy widgettem melyet a projekt fájlban is látok.
    Próbáltam 'QAbstractFormBuilder' és 'QtUiTools'(loadUiFile) -al de nem jön össze.
    Az igazi az lenne, ha Designer Form Class-t hoznék létre ui,h,cpp fájlokkal, de azt sem sikerült elérnem a mainWindow-ból.

    Tudom ezek egyszerű alap dolgok, de nekem most mégsem megy.
    Mutasd a teljes hozzászólást!
  • Ha jól értem, a form-ot létrehoztad. Rendelkezésre állnak az ui,h,cpp fájlok, csak nem tudod a MainWindow-ból elérni?

    Ha ez így van, akkor tedd be a MainWindow.cpp fájlba az includot az adott header állományról. Kb. így:

    #include "mydialog.h"

    Ezután rögtön használhatod is.
    pl. így:

    void MainWindow::showMyDialog() { MyDialog d(this); d.exec(); }

    Természetesen a showMyDialog() egy slot függvény legyen, amit egy bizonyos eseménnyel meg tudsz majd hívni. (Gondolom egyértelmű, hogy deklarálni kell a mainwindow.h állományban a slot függvényt!)
    Mutasd a teljes hozzászólást!
  • has no member named exec

    Ha a Jogosultsagok d(this); helyett csak Jogosultsagok d; van akkor egy pillanatra megjelenik és be is záródik.

    Ezzel:
    Jogosultsagok *widget=new Jogosultsagok; widget->show();
    meg is van egy SDI szerű alkalmazás alapja.

    Ezzel pedig:
    Jogosultsagok *widget=new Jogosultsagok; ui->tabWidget->addTab(widget,"Jogosultságok");
    működik amit akartam, bár ez a "new Jogosultsagok" nem tetszik.
    Mutasd a teljes hozzászólást!
  • Miért nem tetszik?
    A C++ -ban jellemzően így szokás egy futásidőben létrehozandó objektumot előállítani.

    Ha viszont dialógust állítasz elő (nem Widget-et), akkor azt futtathatod úgy is, ahogy én leírtam, pointerek nélkül.
    Mutasd a teljes hozzászólást!
abcd