Задать вопрос
@WhiteP

Почему не фильтруются шрифты в QFontDialog?

Добрый день. Если я правильно понял документацию, то при отображения диалога в списке должны быть только моноширинные шрифты:
QFontDialog dialog;
dialog. setOption(QFontDialog::MonospacedFonts);
bool ok;
auto font = dialog.getFont(&ok);

Однако в списке всегда все системные шрифты, какие бы опции и их комбинации я не устанавливал (пропорциональные в false, например)...
Qt 6.8.2, MS VS 2022, Windows 11.
ЧЯДНТ?
  • Вопрос задан
  • 112 просмотров
Подписаться 1 Простой 8 комментариев
Решения вопроса 1
max_dark
@max_dark
Диванный эксперт
Метод QFontDialog::getFont является static
Его вызов создает объект диалога самостоятельно.
(вызов static метода на объекте скорее всего является ошибкой)

Для задания параметров фильтрации опции можно передать через параметр в расширенной версии этого метода.

#include <QApplication>
#include <QFontDialog>
#include <QDebug>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    {
        bool ok;
        QFont tmp;
        QWidget* parent = nullptr;
        auto font = QFontDialog::getFont(
            &ok
            , tmp
            , parent
            , QStringLiteral("Title")
            , QFontDialog::MonospacedFonts | QFontDialog::DontUseNativeDialog
            );
    }
    return 0;
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы