当前位置:编程学习 > wap >>

请问大家Qt5如何把程序字体设置为自己加载的ttf字体

请问大家有办法么?
google了一下,没找到,Qt5 --------------------编程问答-------------------- int main(int argc, char *argv[])
{
    QApplication a(argc, argv);


    QFont font;
    font.setPointSize(26);         
    font.setFamily(("DejaVu Sans")); //注意这里不完全是TTF文件名字
    font.setBold(false);           
    a.setFont(font);


    QWidget* pWidget = new QWidget;
    QLabel label(pWidget);
    label.setText(QObject::tr("hello world"));
    ......
}
--------------------编程问答--------------------
引用 1 楼 hare777 的回复:
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);


    QFont font;
    font.setPointSize(26);         
    font.setFamily(("DejaVu Sans")); //注意这里不完全是TTF文件名字
    font.setBold(false);           
    a.setFont(font);


    QWidget* pWidget = new QWidget;
    QLabel label(pWidget);
    label.setText(QObject::tr("hello world"));
    ......
}

您这种方法我知道,只适用于系统含有这种字体的时候
比如说,若是setFamily为微软雅黑,这个在win7和win8肯定没有问题,但是若是在xp下,xp默认没有雅黑
这个时候就不起作用
我的需求是程序自己携带ttf字体,然后加载这个字体文件
问题已经解决,下楼贴出解决方法 --------------------编程问答-------------------- 已经摸索出解决方案
#include <QFontDatabase>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);


    int nIndex = QFontDatabase::addApplicationFont("./Resources/msyh.ttf");
if (nIndex != -1)
{
QStringList strList(QFontDatabase::applicationFontFamilies(nIndex));
if (strList.count() > 0)
{
QFont fontThis(strList.at(0));
fontThis.setPointSize(9);
a.setFont(fontThis);
}
}
    ....................
}

回帖散分~~ --------------------编程问答--------------------
引用 3 楼 cai6811376 的回复:
已经摸索出解决方案
#include <QFontDatabase>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);


    int nIndex = QFontDatabase::addApplicationFont("./Resources/msyh.ttf");
if (nIndex != -1)
{
QStringList strList(QFontDatabase::applicationFontFamilies(nIndex));
if (strList.count() > 0)
{
QFont fontThis(strList.at(0));
fontThis.setPointSize(9);
a.setFont(fontThis);
}
}
    ....................
}

回帖散分~~

注意:最好把字体当做本地文件加载,不要添加到qrc中,不然编译会报:编译器堆溢出错误 --------------------编程问答-------------------- 为什么会报堆溢出错误呢?win32应用中嵌入字体完全没有问题啊。 --------------------编程问答--------------------
引用 5 楼 jiangcaiyang123 的回复:
为什么会报堆溢出错误呢?win32应用中嵌入字体完全没有问题啊。

我也不知道,我嵌入的雅黑字体,一编译就报堆溢出错误 --------------------编程问答--------------------
引用 6 楼 cai6811376 的回复:
Quote: 引用 5 楼 jiangcaiyang123 的回复:

为什么会报堆溢出错误呢?win32应用中嵌入字体完全没有问题啊。

我也不知道,我嵌入的雅黑字体,一编译就报堆溢出错误


字体太大,编译Qt二进制资源的时候编译器的栈不够用了。试试64位的编译器交叉编译32位版的。 -m32 似乎是这个开关 --------------------编程问答--------------------
引用 6 楼 cai6811376 的回复:
Quote: 引用 5 楼 jiangcaiyang123 的回复:

为什么会报堆溢出错误呢?win32应用中嵌入字体完全没有问题啊。

我也不知道,我嵌入的雅黑字体,一编译就报堆溢出错误

没什么好办法,我编译大资源的时候也经常栈溢出
补充:移动开发 ,  Qt
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,