first commit
This commit is contained in:
@@ -0,0 +1,105 @@
|
||||
#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";
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user