Qt - kontrolka QSpinBox i zmiana rozmiaru czcionki w kontrolce QTextEdit

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

Klasa QSpinBox odpowiedzialna jest za utworzenie kontrolki QSinBox, która umożliwia wprowadzanie wartości całkowitych z ustalonego przez programistę przedziału. Kontrolka ta posiada również dwa przyciski przewijania. Nadaje się więc ona do ustawiania wartości liczbowych całkowitych i z tego względu postanowiłem nieco rozbudować kod z poprzedniej strony Programowanie → Qt Creator GUI → Qt - kontrolka QTextEdit dodając możliwość zmiany rozmiaru czcionki. W tym celu konieczne jest załączenie pliku nagłówkowego QSpinBox w pliku mainwindow.h oraz dodanie do klasy MainWindow następującego pola:

Listing 1
  1. QSpinBox *fontSize;

W konstruktorze klasy MainWindow warto utworzyć i odpowiednio zainicjalizować obiekt klasy QSpinBox co też i z najdzikszą rozkoszą czynię:

Listing 2
  1. fontSize = new QSpinBox();
  2. ui->mainToolBar->addWidget(fontSize); // podpinanie kontrolki pod pasek narzędziowy
  3. fontSize->setMinimum(6); // ustawiam minimalną wartość możliwą do wpisania
  4. fontSize->setMaximum(48); // ustawiam maksymalną wartość możliwą do wpisania
  5. fontSize->setValue(8); // ustawiam początkowy rozmiar czcionki
  6. QObject::connect(fontSize, SIGNAL(valueChanged(int)), this, SLOT(onFontSizeChanged(int))); // podłączam się pod sygnał valueChanged kontrolki QSpinBox

Jak widać w załączonym powyżej kodzie konieczne jest utworzenie slotu onFontSizeChanged(int) co również z najdzikszą rozkoszą czynię:

Listing 3
  1. void MainWindow::onFontSizeChanged(int index){
  2. ui->edit->setFontPointSize(qreal(index)); // ustawiam rozmiar czcionki w kontrolce QTextEdit
  3. }

Ostatnia rzecz, jaką trzeba zrobić to lekko zmodyfikować wcześniej utworzoną metodę setTextStyleButtonsState dodając następujący kod:

Listing 4
  1. int size = ui->edit->fontPointSize(); // pobieram rozmiar czcionki
  2. fontSize->setValue(size ? size : 8); // jak nie jest równy 0 to go ustawia a jak jest to ustawiam domyślną wartość 8
Przykład zastosowanie kontrolki QSpinBox do zmiany rozmiaru czcionki w kontrolce QTextEdit
Rys. 1
Przykład zastosowanie kontrolki QSpinBox do zmiany rozmiaru czcionki w kontrolce QTextEdit
Strony powiązane
strony powiązane
  1. doc.qt.io/qt-5/qspinbox.html - opis klasy QSpinBox na stronie dokumentacji Qt
  2. doc.qt.io/qt-4.8/qtextedit.html - opis klasy QTextEdit na stronie dokumentacji Qt

Komentarze