在文字处理器中,当我将字体更改为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中的帮助:语言无关紧要。
答案 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]))