欢迎关注公众号可以查看更多完整文章
可以显示Windows上所安装的所有字体的名称。
使用Qt显示数量和名称。
需要依赖Pango、Cairo、glib三个库,获取三个库,获取可以参见我的其他博客。
需要注意的是,编译Pango时,需要设置环境变量:
并且需要在cairo.h中添加
#define HAVE_CAIRO_WIN32
才可以正常使用。
显示效果:
测试源码:
#ifndef QTPANGO_H
#define QTPANGO_H
#include <QtWidgets/QWidget>
class QtPango : public QWidget
{
Q_OBJECT
public:
QtPango(QWidget *parent = 0);
~QtPango();
private:
};
#endif // QTPANGO_H
#include "qtpango.h"
#include <QComboBox>
#include <QLabel>
#include "pango/pangocairo.h"
#include "pango/pango-font.h"
#include "pango/pango-types.h"
#include "pango/pango-fontmap.h"
QtPango::QtPango(QWidget *parent)
: QWidget(parent)
{
PangoFontFamily ** families;
int nfamilies = 0;
PangoFontMap *fontmap = pango_cairo_font_map_get_default();
pango_font_map_list_families(fontmap, &families, &nfamilies);
QLabel *pLabel = new QLabel(this);
pLabel->setText(QString::number(nfamilies));
pLabel->setGeometry(0, 0, 50, 20);
QComboBox *pCombo = new QComboBox(this);
pCombo->setGeometry(70, 0, 200, 20);
for (int i = 0; i < nfamilies; i++) {
PangoFontFamily * family = families[i];
const char *family_name = pango_font_family_get_name(family);
pCombo->addItem(QString(family_name));
}
}
QtPango::~QtPango()
{
}