2017-04-06 25 views
0

我的Qt应用程序中有Qt资源文件(res.qrc)。我进口我的自定义字体在资源如下:从我的应用程序资源中更改QTextEdit中的内容字体

:/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不改变字体的它的内容到我的自定义字体。

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

回答

1

我认为错误是

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

是否检查.AT(0)实际上是你的自定义字体?

最有可能的,你可以通过调用assyrianEventsAAMarcusEastSyriac.setFamily 与字体家族就像

assyrianEventsAAMarcusEastSyriac.setFamily("Marcus East Syriac"); 

明确的字符串解决这个如果这也不行,也许你的自定义字体格式不正确或不提供一个字体家族的名字。因此,我建议您先尝试使用工作字体,然后再返回到自定义内容。

+0

这工作在另一个地方的应用程序,因为我使用这种字体和QFontDatabase的普通标签(QLabel)和那里工作正常,但对于QTextEdit它不起作用:-( –

+0

如果你只是调用QTextEdit :: setFontFamily ? –

相关问题