我的UI上有一个简单的QlineEdit。它允许我输入印地语字符(从谷歌翻译器复制并粘贴)- (जॉन)
但是当我使用样式表更改任何样式时,例如颜色更改为红色。现在,如果我粘贴相同的印地语文本(OpenType support ) (जॉन),它会显示立方体(方框)而不是字符,并得到输出消息“script missing for script”。
我还尝试了使用两个编辑框,其中一个在样式表中定义了颜色,我也看到了其他编辑框上的框(尽管我根本没有接触它的样式)
没有代码需要,只需创建hello world程序,在设计器中添加一个编辑框,在样式表中定义一个或多个样式,例如颜色,并尝试粘贴印地语字符"जॉन“
有人能帮我这个忙吗。
发布于 2015-05-06 17:50:01
我的猜测是,当您更改小部件的样式表时,您的字体将更改为一个,这不支持印地语。为了解决这个问题,您需要找出Qt在系统中默认使用哪种字体,并将其设置在相同的样式表字符串中。
发布于 2015-05-14 19:00:06
MainWindow::MainWindow(QWidget *parent):QMainWindow(parent),ui(new Ui::MainWindow) { ui->setupUi(this);
QStringList fileList;
fileList<<"akshar.ttf"<<"DroidSansDevanagari-Regular.ttf"<<"aparaj.ttf";
fileList<<"chandas.ttf"<<"mangal.ttf"<<"Kruti_Dev_010.ttf";
QStringList::const_iterator constIterator;
for (constIterator = fileList.constBegin(); constIterator != fileList.constEnd(); ++constIterator)
{
QFile res(":/new/prefix1/" + *constIterator);
if (res.open(QIODevice::ReadOnly))
{
if (QFontDatabase::addApplicationFontFromData(res.readAll()) != -1) {
qDebug()<<"successfully loaded font " + *constIterator;
}
else
{
qDebug()<<"failed to load font " + *constIterator;
}
}
else
{
QString errMsg;
errMsg = res.errorString();
qDebug()<<"font file open failed : = " + errMsg ;
}
res.close();
QFont font;
font.setFamily("akshar");
QApplication::setFont(font);
// QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));
}
ui->lineEdit->setFont(QFont("akshar", 10));
ui->lineEdit->setFont(QFont("mangal", 10));
ui->lineEdit->setText(QObject::tr("जॉन"));
ui->lineEdit->hide();}
这似乎不是很好的解决方案,但在这里,通过一些试验和错误。我正在加载字体(据我所知Qt已经支持),就像hello world程序一样,它工作得很好,直到我在UI中添加了一个按钮。
我现在在做什么?我正在创建lineedit,为它设置字体,然后在上面设置一个印地语测试。然后隐藏这个LineEdit,因为我不需要它。
因为我做了上面提到的所有事情,现在我的UI允许我将不同语言的文本粘贴到同一UI屏幕上的其他行编辑上-参见附件。
我发现的似乎愚蠢的解决方案,但没有这行编辑将显示印地语文本框。我使用版本控制测试了我的工作hello world程序和非工作hello world程序之间的差异,代码中没有区别,所以QT工具运行时突然忘记了印地语,然后再也不能理解它。但我的工作是让用户界面理解印地语和相关语言。
https://stackoverflow.com/questions/30071479
复制相似问题