Qt键盘输入用其他语言

时间:2018-01-23 16:58:40

标签: python c++ qt pyqt5

在文字处理器中,当我将字体更改为Preeti时,键入“asdfgh”将导致显示“बकमानज”。我尝试将QPlainTextEdit的字体更改为Preeti,但它仍在键入“asdfgh”

如何在Qt中实现相同的目标?

这就是我在做的事情:

@pyqtSlot()
def select_font(self):
    font, ok = QFontDialog.getFont(self)
    if ok:
        ## the text in ui.text_edit is in unicode
        self.ui.text_edit.setFont(font)

显然字体存在于系统中。字体的显示也是正确的(从.txt文件加载时)。什么不起作用是键入该字体。从键盘到所选字体的键映射就是我所说的。

c ++或python中的帮助:语言无关紧要。

1 个答案:

答案 0 :(得分:2)

您的应用程序中可能无法识别该字体。检查您是否安装了该字体。您还可以尝试将preeti.ttf文件添加到资源,并使用以下方法将其添加到应用程序:

QFontDatabase::addApplicationFont(“:/fonts/preeti.ttf”);

我发现样式表比设置字体更可靠(比使用setFont(QFont))。使用textEdit->setStyleSheet(font-family: 'Preeti');

修改

从QFontDialog()设置样式表可以在python中以下列方式完成

@pyqtSlot()
def select_font(self):
    font, ok = QFontDialog.getFont(self)
    if ok:
        params = font.toString().split(",") # The string is :"Preeti,9,-1,5,50,0,0,0,0,0"
        self.ui.text_edit.setStyleSheet("font-family :%s;font-size:%spt;" % (params[0], params[1]))