从我的应用程序资源更改QTextEdit中的内容

时间:2017-04-06 11:56:09

标签: qt qt5.7

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

:/fonts/aa_marcus_east_syriac.ttf

我也在头文件中定义:

private:
    QFont assyrianEventsAAMarcusEastSyriac;

我在mainwindow中使用了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。 “assyrianEventsAAMarcusEastSyriac”变量在另一个名为init()的函数中初始化。这是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不会将其内容的字体更改为我的自定义字体。

我该如何解决这个问题?请帮帮我们。 感谢

1 个答案:

答案 0 :(得分:1)

我认为错误在

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

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

您最有可能通过致电assyrianEventsAAMarcusEastSyriac.setFamily来解决此问题 使用字体系列的显式字符串,就像

一样
assyrianEventsAAMarcusEastSyriac.setFamily("Marcus East Syriac");

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