0

我的 Qt 应用程序中有 Qt 资源文件 (res.qrc)。我在资源中导入了我的自定义字体,如下所示:

:/fonts/aa_marcus_east_syriac.ttf

我也在头文件中定义:

private:
    QFont assyrianEventsAAMarcusEastSyriac;

我在主窗口中使用了 QTextEdit。当用户单击一个按钮时,我的应用程序会读取一个文本文件。文本文件中的每一行都应该在 QTextEdit 中导入,但有些行应该是我的资源中的 aa_marcus_east_syriac.ttf 字体。所以我写了这段代码:

void Widget::readMonthAssyrianEvents()
{
    QStringList eventsList;
    eventsList = readEventFile();

    ui->notificationTextEdit->setCurrentFont(assyrianEventsAAMarcusEastSyriac);

    for (int index = 0; index < eventsList.length(); index++)
    {
        QString eventType, eventContent;
        QStringList tempStringList = eventsList[index].split('|');

        eventType = tempStringList[0];
        eventContent = tempStringList[1];

        if (eventType == "0")
            ui->notificationTextEdit->append(eventContent);
    }
}

readEventFile() 函数工作正常。它读取文本文件并将所有行作为 QStringList。在另一个名为 init() 的函数中初始化的“assyrianEventsAAMarcusEastSyriac”变量。这是 init() 函数:

int id = QFontDatabase::addApplicationFont(":/fonts/aa_marcus_east_syriac.ttf");
QString family = QFontDatabase::applicationFontFamilies(id).at(0);
assyrianEventsAAMarcusEastSyriac.setFamily(family);
assyrianEventsAAMarcusEastSyriac.setPointSize(20);

我的问题是 QTextEdit 不会将其内容的字体更改为我的自定义字体。

我怎么解决这个问题?请帮帮我。谢谢

4

1 回答 1

1

我认为错误在于

QString family = QFontDatabase::applicationFontFamilies(id).at(0);

您是否检查过 .at(0) 实际上是您的自定义字体?

很可能您可以通过使用字体系列的显式字符串调用来解决这个问题,assyrianEventsAAMarcusEastSyriac.setFamily 就像

assyrianEventsAAMarcusEastSyriac.setFamily("Marcus East Syriac");

如果这也不起作用,则可能是您的自定义字体格式错误或未提供字体系列名称。因此,我建议您先尝试使用工作字体,然后最终返回自定义内容。

于 2017-04-06T12:34:50.963 回答