关于使用QsciScintilla的中文补全问题
使用QsciScintilla组件解决自动补全方案是使用:QsciScintilla类 + QsciLexer类 + QsciAPIs类,补全关键字设为非中文时非常棒,运行地很好,但是如果设为中文关键字的话就完全没有反应,代码如下:
QsciScintilla *m_strgyExpEdit;
QsciLexerCPP *textLexer = new QsciLexerCPP;
m_strgyExpEdit->setLexer(textLexer);
//设为UTF8编码
m_strgyExpEdit->SendScintilla(QsciScintilla::SCI_SETCODEPAGE,QsciScintilla::SC_CP_UTF8,lparam);
m_strgyExpEdit->SendScintilla(QsciScintilla::SCI_SETLEXER, SCLEX_CPP);
QsciAPIs *apis = new QsciAPIs(textLexer);
apis->add(QString("basic"));
apis->add(QString::fromLocal8Bit("非凡哥").toUtf8());
apis->prepare();
m_strgyExpEdit->setAutoCompletionSource(QsciScintilla::AcsAll); //补全之前的文本
m_strgyExpEdit->setAutoCompletionThreshold(1); //输入一个字符就会出现自动补全的提示
一开始我怀疑是中文编码问题,于是我使用qtcreator调试器查看,并且折腾了快一星期,然而作了一些实验貌似不是编码问题,于是实在没招,因为项目还比较急的,只能求助了