在我的嵌入式系统上,我没有X11,Mac,Win,S60等。我一直从QInputContextFactory类的create方法返回一个NULL(0)指针。我确认没有定义QT_NO_LIBRARY。
在我的桌面Qt Build上运行正常。
我还验证了我的自定义键和父级正在传递给方法。
什么可能导致失败? - >
if (QInputContextFactoryInterface *factory =
qobject_cast<QInputContextFactoryInterface*>(loader()->instance(key))) {
result = factory->create(key);
}
以下是整个方法:
QInputContext *QInputContextFactory::create( const QString& key, QObject *parent )
{
QInputContext *result = 0;
#if defined(Q_WS_X11) && !defined(QT_NO_XIM)
if (key == QLatin1String("xim")) {
result = new QXIMInputContext;
}
#endif
#if defined(Q_WS_WIN)
if (key == QLatin1String("win")) {
result = new QWinInputContext;
}
#endif
#if defined(Q_WS_MAC)
if (key == QLatin1String("mac")) {
result = new QMacInputContext;
}
#endif
#if defined(Q_WS_S60)
if (key == QLatin1String("coefep")) {
result = new QCoeFepInputContext;
}
#endif
#ifdef QT_NO_LIBRARY
Q_UNUSED(key);
#else
qDebug() << "Here we are";
if (QInputContextFactoryInterface *factory =
qobject_cast<QInputContextFactoryInterface*>(loader()->instance(key))) {
result = factory->create(key);
}
#endif
if (result)
result->setParent(parent);
return result;
}
答案 0 :(得分:1)
在Qt中,QInputContextFactory
类是加载输入上下文插件的前端。如果输入上下文插件不存在或未正确部署,则无法加载输入上下文插件。输入上下文插件通常存储在$QT_PLUGIN_PATH/inputmethods
下。因此,如果该目录中没有插件,create
的{{1}}方法将返回NULL。
值得注意的是,Qt确实提供了一些自定义插件位置的机制。有关详细信息,请参阅以下内容: