#include "ffontsetting.h" #include "qdebug.h" #include "qdir.h" #include "ui_ffontsetting.h" #include #include FFontSetting::FFontSetting(QWidget *parent) : QWidget(parent) , cbFontStyle(nullptr) , cbFontColor(nullptr) , sbFontSize(nullptr) , ui(new Ui::FFontSetting) { ui->setupUi(this); setupColorComboBox(ui->cbFontColor); cbFontStyle = ui->cbFontStyle; cbFontColor = ui->cbFontColor; sbFontSize = ui->sbFontSize; // Загружаем шрифты при создании виджета loadFonts(); } FFontSetting::~FFontSetting() { delete ui; } void FFontSetting::setupColorComboBox(QComboBox* comboBox) { comboBox->clear(); // Добавляем цвета QStringList colorNames = QColor::colorNames(); foreach (const QString &name, colorNames) { QColor color(name); QPixmap pixmap(20, 20); pixmap.fill(color); comboBox->addItem(QIcon(pixmap), name, color); } // Устанавливаем первый цвет по умолчанию if (comboBox->count() > 0) { comboBox->setCurrentIndex(0); } } void FFontSetting::loadFonts() { QString fontsPath = "fonts"; QDir fontsDir(fontsPath); if (fontsDir.exists()) { QStringList fontFiles = fontsDir.entryList(QStringList() << "*.ttf" << "*.otf" << "*.ttc", QDir::Files); foreach (const QString &fontFile, fontFiles) { QString fontPath = fontsDir.absoluteFilePath(fontFile); int fontId = QFontDatabase::addApplicationFont(fontPath); if (fontId != -1) { QStringList fontFamilies = QFontDatabase::applicationFontFamilies(fontId); } else { } } // ОБНОВЛЯЕМ СПИСОК ШРИФТОВ В КОМБОБОКСЕ ui->cbFontStyle->clear(); // Очищаем старый список // Получаем все шрифты через объект QFontDatabase QFontDatabase fontDatabase; QStringList fontFamilies = fontDatabase.families(); // Получаем все шрифты // ИЛИ используйте статический метод с параметром: // QStringList fontFamilies = QFontDatabase::families(QFontDatabase::Any); ui->cbFontStyle->addItems(fontFamilies); // Добавляем все шрифты // Устанавливаем шрифт по умолчанию int defaultIndex = ui->cbFontStyle->findText("Arial"); if (defaultIndex >= 0) { ui->cbFontStyle->setCurrentIndex(defaultIndex); } // Показываем количество доступных шрифтов } else { // Загружаем системные шрифты, если папки нет QFontDatabase fontDatabase; QStringList fontFamilies = fontDatabase.families(); ui->cbFontStyle->clear(); ui->cbFontStyle->addItems(fontFamilies); int defaultIndex = ui->cbFontStyle->findText("Arial"); if (defaultIndex >= 0) { ui->cbFontStyle->setCurrentIndex(defaultIndex); } // Проверяем альтернативные пути QString appDir = QApplication::applicationDirPath(); QString altPath = appDir + "/fonts"; } }