首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Qt样式更改导致错误(缺少OpenType支持)

Qt样式更改导致错误(缺少OpenType支持)
EN

Stack Overflow用户
提问于 2015-05-06 16:33:55
回答 2查看 2.4K关注 0票数 1

我的UI上有一个简单的QlineEdit。它允许我输入印地语字符(从谷歌翻译器复制并粘贴)- (जॉन)

但是当我使用样式表更改任何样式时,例如颜色更改为红色。现在,如果我粘贴相同的印地语文本(OpenType support ) (जॉन),它会显示立方体(方框)而不是字符,并得到输出消息“script missing for script”。

我还尝试了使用两个编辑框,其中一个在样式表中定义了颜色,我也看到了其他编辑框上的框(尽管我根本没有接触它的样式)

没有代码需要,只需创建hello world程序,在设计器中添加一个编辑框,在样式表中定义一个或多个样式,例如颜色,并尝试粘贴印地语字符"जॉन“

有人能帮我这个忙吗。

EN

回答 2

Stack Overflow用户

发布于 2015-05-06 17:50:01

我的猜测是,当您更改小部件的样式表时,您的字体将更改为一个,这不支持印地语。为了解决这个问题,您需要找出Qt在系统中默认使用哪种字体,并将其设置在相同的样式表字符串中。

票数 0
EN

Stack Overflow用户

发布于 2015-05-14 19:00:06

MainWindow::MainWindow(QWidget *parent):QMainWindow(parent),ui(new Ui::MainWindow) { ui->setupUi(this);

代码语言:javascript
复制
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工具运行时突然忘记了印地语,然后再也不能理解它。但我的工作是让用户界面理解印地语和相关语言。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30071479

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档