我真的很挣扎,不知道如何解决这个问题。
这是代码。
我在symbian ^ 3(美女)
上运行此功能我需要使用2种自定义字体。
In the example below i have created 3 buttons.
1. Display gurbaniwebthick.ttf
2. Display GurHindi.ttf.
3. Quit.
适用于N9
我单击第一个按钮,然后单击文本,它显示Pubjabi中的第一行。
单击第二个按钮,然后单击文本字段,它将显示印地语中的第一行。
当我退出应用程序然后再次运行应用程序时,不会应用字体。它就像无法锁定文件一样。
请告知如何解决此问题。
import QtQuick 1.1
import com.nokia.symbian 1.1
Rectangle {
width: 360
height: 640
property string displaystr
property string displaystr1
FontLoader { id: localGurFont; source: "qrc:/gurbaniwebthick.ttf"}
FontLoader { id: localHinFont; source: "qrc:/Gurhindi.ttf"}
Column {
ButtonColumn {
checkedButton: b1
spacing: 5
Button{
id:b1
text:"<> siq nwmu krqw purKu"
font.family: localGurFont.name
//font.family: "Gurmukhi";
onClicked: {
displaystr1 = '<font face= "'+localGurFont.name+'" size="6" color="black">kYsI AwrqI hoie Bv KMfnw qyrI AwrqI ]</font><br><br><font face= "Ariel" size="5" color="red">What A Beautiful Lamp-Lit Worship Service This Is! O Destroyer Of Fear, This Is Your Aartee, You r Worship Service.</font><br><br><font face= "Ariel" size="5" color="blue">Kehsi Aarti Hoee Bhv Khandna Teyri Aarti |</font>';
console.log(displaystr);
}
}
Button{
id:b6
text:"< siq nwmu krqw purKu"
font.family: localHinFont.name
onClicked: {
displaystr1 = '<font face= "'+localHinFont.name+'" size="6" color="black">kYsI AwrqI hoie Bv KMfnw qyrI AwrqI ]</font><br><br><font face= "Ariel" size="5" color="red">What A Beautiful Lamp-Lit Worship Service This Is! O Destroyer Of Fear, This Is Your Aartee, You r Worship Service.</font><br><br><font face= "Ariel" size="5" color="blue">Kehsi Aarti Hoee Bhv Khandna Teyri Aarti |</font>';
console.log(displaystr);
}
}
Button{
id:b7
text:"Quit"
onClicked: {
Qt.quit();
}
}
}
TextArea {
id: t1
width: 360
height: 360
text: displaystr
wrapMode:Text.WordWrap
MouseArea {
anchors.fill: parent
onClicked: {
displaystr = displaystr1;
console.log(displaystr1);
}
}
}
}
}
列表视图同样存在问题 //导入QtQuick 1.0 //以S60第5版或Maemo 5为目标 导入QtQuick 1.1 import com.nokia.symbian 1.1
Rectangle {
id: initialRect
height: 640
width: 360
property string fontName
// color: "black"
FontLoader { id: localGurFont; source: "qrc:/gurbaniwebthick.ttf"}
FontLoader { id: localHinFont; source: "qrc:/Gurhindi.ttf"}
ListModel {
id: contactModel
ListElement {
baani: 'kYsI AwrqI hoie Bv KMfnw qyrI AwrqI ]'
displayColor: 'black'
displayfont: 'GurbaniWebThick'
}
ListElement {
baani: 'What A Beautiful Lamp-Lit Worship Service This Is! O Destroyer Of Fear, This Is Your Aartee,ou r Worship Service.'
displayColor: 'red'
displayfont: 'Arial'
}
ListElement {
baani: 'Kehsi Aarti Hoee Bhv Khandna Teyri Aarti |'
displayColor: 'blue'
displayfont: 'Arial'
}
ListElement {
baani: 'kYsI AwrqI hoie Bv KMfnw qyrI AwrqI ]'
displayColor: 'black'
displayfont: 'GurbaniWebThick'
}
ListElement {
baani: 'What A Beautiful Lamp-Lit Worship Service This Is! O Destroyer Of Fear, This Is Your Aartee,ou r Worship Service.'
displayColor: 'red'
displayfont: 'Arial'
}
ListElement {
baani: 'Kehsi Aarti Hoee Bhv Khandna Teyri Aarti |'
displayColor: 'blue'
displayfont: 'Arial'
}
}
Component {
id: baaniDelegate
Item {
width: parent.width ; height:parent.height/contactModel.count
Text {
width: parent.width
text: baani
font.family: displayfont
color: displayColor
wrapMode: Text.WordWrap
}
}
}
ListView{
anchors.fill: parent
model: contactModel
delegate: baaniDelegate
// highlight: Rectangle { color: "lightsteelblue"; radius:5}
// focus: true
}
Button{
id:b7
text:"Quit"
onClicked: {
Qt.quit();
localHinFont.deleteLater;
localGurFont.deleteLater;
localGurFont.Null;
localHinFont.Null;
}
}
}
答案 0 :(得分:1)
解决
<强> SymbianFontLoader.h 强>
#ifndef SYMBIANFONTLOADER_H
#define SYMBIANFONTLOADER_H
#include <QString>
#include <coemain.h>
#include <w32std.h>
#include <badesca.h>
#include <gulutil.h>
class SymbianFontLoader
{
public:
SymbianFontLoader(bool retainFonts = false) {
m_retainFonts = retainFonts;
m_screenDevice = CCoeEnv::Static()->ScreenDevice();
}
~SymbianFontLoader() {
if (!m_retainFonts)
foreach(int id, m_fontIds)
m_screenDevice->RemoveFile(id);
}
QStringList loadedFonts() {
QStringList fonts;
TRAPD(err, listFontsL(fonts));
qt_symbian_throwIfError(err);
return fonts;
}
void load(QString path) {
qDebug() <<";"<<path<<";";
TPtrC fontFile(path.utf16(), path.length());
// TPtrC fontFile(qt_QString2TPtrC(path));
//TPtrC fontFile(path, path.length());
qDebug()<<"path" << path.utf16() << "length" <<path.length();
int fontId;
int err = m_screenDevice->AddFile(fontFile, fontId);
qDebug() <<err;
qt_symbian_throwIfError(err);
qDebug() << "after error";
if (!m_retainFonts)
m_fontIds << fontId;
}
private:
void listFontsL(QStringList& fonts) {
CDesCArrayFlat *fontNames = new (ELeave) CDesCArrayFlat(5);
CleanupStack::PushL(fontNames);
FontUtils::GetAvailableFontsL(*m_screenDevice, *fontNames, EGulAllFonts);
int fontCount = fontNames->Length();
for (int i=0; i < fontCount; i++) {
TPtrC fontName = fontNames->MdcaPoint(i);
QString font = QString::fromUtf16(fontName.Ptr(), fontName.Length());
fonts << font;
}
CleanupStack::PopAndDestroy();
}
private:
CWsScreenDevice* m_screenDevice;
bool m_retainFonts;
QList<int> m_fontIds;
};
#endif // SYMBIANFONTLOADER_H
<强>的main.cpp 强>
#ifdef Q_OS_SYMBIAN
SymbianFontLoader fontLoader(true);
fontLoader.load("C:\\data\\2006126c\\gurbaniwebthick.ttf");
fontLoader.load("C:\\data\\2006126c\\Gurhindi.ttf");
#endif
确保重新启动手机。
.pro文件
LIBS += -lcone -lws32 -lbafl -legul
font_files.pkg_postrules += “\“C:\\QTproj\\QTDeploy\\gurbaniwebthick.ttf\” – \“C:\\data\\2006126c\\gurbaniwebthick.ttf\”“
font_files.pkg_postrules += “\“C:\\QTproj\\QTDeploy\\Gurhindi.ttf\” – \“C:\\data\\2006126c\\Gurhindi.ttf\”“
DEPLOYMENT += font_files my_deployment