Qt - obsługa zdarzenia resizeEvent i dostosowanie rozmiaru kontrolki QTextEdit do rozmiaru okna

Stronę tą wyświetlono już: 14 razy

Każda kontrolka, czy okno programu dysponują zestawem metod, które są wywoływane gdy tylko zajdzie określone zdarzenie. Często też zdarza się konieczność nadpisania takiej metody w celu jej obsłużenia na własny sposób. W tym przypadku nawiązując do projektu rozpoczętego na stronie , gdzie obiekt edit klasy QTextEdit wymaga dostosowania rozmiaru za każdym razem, gdy rozmiar okna głównego programu zostanie zmieniony. W tym celu w klasie MainWindow należy zamieścić nagłówek metody wywoływanej przy zmianie okna głównego:

Listing 1
  1. void resizeEvent(QResizeEvent *event) override;

W pliku mainwindow.cpp natomiast powinna znaleźć się ta metoda wraz z jej ciałem:

Listing 2
  1. void MainWindow::resizeEvent(QResizeEvent *event){
  2. QMainWindow::resizeEvent(event); // wywołanie bazowej klasy metody resizeEvent
  3. QRect rect = ui->centralWidget->geometry(); // kontrolka edit jest kontrolką potomną kontrolki centralWidget więc pobieram rozmiar tej kontrolki
  4. ui->edit->setGeometry(0, 0, rect.width(), rect.height()); // i ustawiam rozmiar edit-a
  5. }

Po takim zabiegu przy zmianie rozmiaru okna kontrolka QTextEdit dostosuje swój rozmiar do okna programu.

Widok okna po zastosowaniu obsługi zdarzenia resizeEvent
Rys. 1
Widok okna po zastosowaniu obsługi zdarzenia resizeEvent
Strony powiązane
strony powiązane
  1. doc.qt.io/qt-5/qwidget.html#resizeEvent - opis metody resizeEvent na stronie dokumentacji Qt
  2. doc.qt.io/qt-4.8/qtextedit.html - opis klasy QTextEdit na stronie dokumentacji Qt

Komentarze