Символы кириллицы выводит некорректно. Как сделать чтобы выводился читабельный текст на русском языке? Тип приложения - не Qt, Qt Creator 4.5.0 основан на Qt 5.10.0. Win7.
|
Создание графического интерфейса средствами Qt
13.3 Политики размера (Size Policies)
В процессе размещения визуальные элементы и компоновки "договариваются" о размерах и пропорциях в окне. Компоновщики придают размещению структурированный вид: будут ли элементы размещены в ряд (вертикально или горизонтально) либо в сетке. В свою очередь каждый из виджетов предоставляет собственные политики размера: какое пространство будет занимать каждый визуальный элемент в ширину и высоту, минимальный и максимальный размер для каждого из них.
Политики размера задают вызовом метода setSizePolicy() класса QWidget. Метод принимает значение для горизонтальной и вертикальной политики изменения размера. Метод sizeHint() возвращает оптимальный размер (класс QSize), который был определён для виджета. Ниже приведены возможные значения настройки политик размера:
- QSizePolicy::Fixed — sizeHint определяет размеры элемента. Размеры элемента фиксированы;
- QSizePolicy::Minimum — sizeHint определяет минимально возможные размеры;
- QSizePolicy::Maximum — sizeHint определяет максимально возможные размеры;
- QSizePolicy::Preferred — sizeHint определяет рекомендованные размеры для элемента;
- QSizePolicy::Expanding — так же как Preferred с тенденцией к увеличению размера;
- QSizePolicy::MinimumExpanding — так же как Minimum с тенденцией к увеличению размера;
- QSizePolicy::Ignored — sizeHint будет игнорирован, элемент должен занимать столько места на форме, сколько возможно.
В предыдущем примере кнопки имеют фиксированный вертикальный размер. Для того, чтобы размеры кнопок менялись как горизонтально так и вертикально, добавим настройки политик размера метода createWidgets().
void CalculatorMainWindow::createwidgets ( ) { ..... //Зададим политики размера для кнопок: горизонтальное и вертикальное изменение размера pushButton->setSizePolicy ( QsizePolicy::Preferred, QsizePolicy::Preferred ); pushButton_2->setSizePolicy ( QsizePolicy::Preferred, QsizePolicy::Preferred ); pushButton_3->setSizePolicy ( QsizePolicy::Preferred, QsizePolicy::Preferred ); pushButton_4->setSizePolicy ( QsizePolicy::Preferred, QsizePolicy::Preferred ); pushButton_5->setSizePolicy ( QsizePolicy::Preferred, QsizePolicy::Preferred ); pushButton_6->setSizePolicy ( QsizePolicy::Preferred, QsizePolicy::Preferred ); pushButton_7->setSizePolicy ( QsizePolicy::Preferred, QsizePolicy::Preferred ); pushButton_8->setSizePolicy ( QsizePolicy::Preferred, QsizePolicy::Preferred ); pushButton_9->setSizePolicy ( QsizePolicy::Preferred, QsizePolicy::Preferred ); pushButton_10->seSsizePolicy ( QsizePolicy::Preferred, QsizePolicy::Preferred ); pushButtonC->setSizePolicy ( QsizePolicy::Preferred, QsizePolicy::Preferred ); pushButtonPlus->setSizePolicy ( QsizePolicy::Preferred, QsizePolicy::Preferred ); }
Также размеры виджета можно жёстко ограничивать с помощью методов setMaximumSize() (контролирует максимальный размер элемента интерфейса) и setMinimumSize() (контролирует минимальный размер). В качестве параметра они принимают объект класса QSize, содержащий размеры элемента. Для удобства можно использовать также методы setMinimumWidth(), setMinimumHeight(), setMaximumWidth(), setMaximumHeight() для задания минимальной ширины и высоты, а также максимальной ширины и высоты. Зададим фиксированный вертикальный размер для визуального элемента lcdNumber:
void CalculatorMainWindow::createwidgets ( ) { ... lcdNumber->setFixedHeight ( 5 0 ); }
Результат изменения политик размера показан на рис. 13.6.