[Qt] Dynamiczna zmiana rozmiaru layoutu

0

Cześć, mam QGridLayout do którego dodaje różne widgety, a także jeden QFormLayout. Kiedy do QFormlayout dodam dodatkowy wiersz w trakcie działania programu, oba layouty nie zmieniają swoich rozmiarów, zamiast się odpowiednio zwiększyć, zachowują takie same rozmiary, a widgety w QFormLayout dostosowują się do wielkości layoutu, czyli zmniejszają się. Kiedy próbowałem tak dodać widget do layout zewnętrznego (QGridLayout) nie było takiego problemu. Jaką metoda odpowiada za takie zwiększanie rozmiarów? Próbowałem wywołać update() ale nic nie pomaga, resizeEvent ani paintEvent nie widzę dostępnych metodach wywołania...

0

Pokaż jak konstruujesz i modyfikujesz te layouty - pokaż kod, bo nie mamy kryształowej kuli.

0

QLayoutItem::invalidate ()?

0

Wygląda to mniej więcej tak:

authorsLayout = new QFormLayout;
authorsLayout->addRow(author,pushAuthor);

layout = new QGridLayout;
layout->addWidget(new QLabel(tr("Tytuł:")),0,0);
layout->addWidget(title,0,1);
layout->addLayout(authorsLayout,3,1);
layout->addWidget(new QLabel(tr("Numer:")),4,0);
layout->addWidget(number,4,1);

Przy czym, pushAuthor to QPushButton, poperz jego kliknięcie wywołuje slot dodający kolejny wiersz do authorsLayout, także poprzez metodę addRow().

0

mało kodu, właściwie nie widać co robisz źle.
Może zapomniałeś zrobić setLayout?
W każdym razie, aby layout działał musi być jakoś połączony z widget'em rodzicem.
Layout nie powinien "wisieć".

0

Zrobiłęm to teraz jako osobny program, także z layoutem głównym i wewnętrznym do którego dynamicznie dodaje wiersz i działa. Dziwna sprawa. Myślałem generalnie że wina w braku zmiany rozmiaru leży po stronie Qt a nie mojej, stąd ten temat. Wobec tego będę szukał dalej, ale mam też przy okazji dwa inne pytania:

  1. Jaki jest najlepszy sposób na zaktualizowanie widoku/modelu po wstawieniu do bazy rekordu? Model to QSqlQueryModel.
  2. Da się w jakiś sposób ustawić maskę na całęj kolumnie w klasie dziedziczącej po QSqlQueryModel czy muszę utworzyć delegate? Chodzi mi konkretnie o sytuację w której pobieram z bazy np. kod pocztowy w zapisanej formie: 22333 a w tabeli widzę 22-333.

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