Pango+Qt 列舉windows系統字體

可以顯示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()
{

}

本文地址:http://blog.csdn.net/u011417605/article/details/53489736
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章