Files
TTW_Bot/ffontsetting.cpp
T
2026-01-26 22:26:19 +03:00

106 lines
3.4 KiB
C++

#include "ffontsetting.h"
#include "qdebug.h"
#include "qdir.h"
#include "ui_ffontsetting.h"
#include <QFontDatabase>
#include <QApplication>
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";
}
}