QTableWidget a edytowanie wierszy
-
Witam, w projekcie mam utworzony qTableWidget i jak go uzupełnię przykładowymi danymi to po kliknięciu dwa razy na dany wiersz w danej kolumnie można edytować tekst. I tutaj mam do was pytanie, czy da radę to jakoś zablokować ??
-
Jasne. Zerknij na "EditTriggers":http://qt-project.org/doc/qt-5/qabstractitemview.html#EditTrigger-enum.
-
@sierdzio dzięki działa, mam jeszcze jedno pytanie, można jakoś grupować elementy menu (przyciski, teksty itd), żeby się powiększały w raz z powiększaniem okna , bo gdy robię za pomocą qtCreator Grid Layout to nie działa.
-
Tak, da się to wszystko kontrolować, acz sprawa jest dość delikatna. Główny gracz tutaj to "QSizePolicy":http://qt-project.org/doc/qt-5/qwidget.html#sizePolicy-prop. Każdy Widget posiada taką właściwość.
W zależności od tego, które elementy UI mają się powiększać, a które nie, musisz im ustawiać odpowiednie wartości tej zmiennej ("dostępne wartości":http://qt-project.org/doc/qt-5/qsizepolicy.html#Policy-enum). Można to bardzo łatwo zrobić z poziomu Designera w Qt Creatorze, ale jak chcesz, to możesz też wszystko klepać z palca w C++.
-
Aha, do tego możesz w GUI wrzucać Spacer: jest to element, który zawsze maksymalnie się rozszerza, separując tym samym różne elementy i "ściskając je".
-
Bym użył qtCreator ale teraz chyba nie dam rady, bo nie które elementy nachodzą na siebie (potrzebowałem tak zrobić do zakładek, mam zrobione że w zależności co zostanie uruchomione z menu, nie które elementy się pojawiają i nie które chowają) więc pozostaje mi tylko i wyłącznie grupowanie za pomocą kodu.
-
...albo użycie QStackWidget.
-
Dodałem w qtCreator ten qStackWidget i dodałem slot
@void Config_os::on_stackedWidget_destroyed()
{
ui->stackedWidget->addWidget(ui->label);
ui->stackedWidget->addWidget(ui->label_2);
ui->stackedWidget->addWidget(ui->label_3);
ui->stackedWidget->addWidget(ui->label_4);
}@i w slocie, który wyświetla te label-e wstawiłem wykonywanie się funkcji, ale tylko zmieniły swoje położenie, po rozciągnięciu okienka, nadal są w tej samej pozycji.
@...
on_stackedWidget_destroyed();
...@ -
Hm, możliwe że nie ustawiłeś głównego widgetu (jeśli używasz QMainWindow). Popatrz na funkcję QMainWindow::setCentralWidget(). Dzięki niej możesz poinformować swoje główne okno, który widget/ layout jest rodzicem twojego interfejsu. Główne okno wtedy informuje wszystkie "dzieci" o zmianach swojej geometrii.
Wszystko zależy od tego, jak to wszystko poukładałeś. Qt daje ogromną ilość sposobów, w jakie można ułożyć interfejs.
-
Wpadłem na inny sposób, wiesz może jak zablokować rozciąganie głównego okienka ??
-
Tak samo, jak każdego innego widgetu: użyj setSizePolicy(QSizePolicy::Fixed). Samo główne okno ma jeszcze dodatkowe opcje, obczaj "QWidget::windowFlags":http://qt-project.org/doc/qt-5/qwidget.html#windowFlags-prop.
-
Dzięki za pomoc, użyłem this->setFixedSize(552, 484);.
-
@sierdzio, znasz może jakieś strony, na których jest chociaż kawałek przetłumaczonej dokumentacji qt albo chociaż jakiś kurs ?? Gdyż te co znalazłem w necie to już wszystkie przeczytałem.
-
Sorry, nie znam, bo nie potrzebuję. Informatycy powinni dobrze znać angielski :)
-
Wiem że powinni znać ale w szkole słabo uczą. Więc pozostaje tylko na własną rękę.
-
No to wiesz, na szkole nie ma co polegać, tylko samemu się starać.