我有类似的情况,当我在任何输入字段上使用'autofocus'然后使用以下信号我能够调出键盘:
JSONObject jsono = new JSONObject(response);
JSONArray jarray = jsono.getJSONArray("restaurents");
if(!jarray.equals("null")) {
//District value is not null
Toast.makeText(getContext(), "not null", Toast.LENGTH_LONG).show();
}else {
Toast.makeText(getContext(), " null", Toast.LENGTH_LONG).show();
}
其中return this.http.post(environment.frameworkUrl,framework,
{withCredentials: true} );
}
是调出键盘的功能。
现在,我正在尝试在30秒超时后对输入字段进行调焦时调出键盘,即,我有一个按钮,在点击哪个系统等待30秒后然后它将焦点放在输入字段。
参考:
connect(view, SIGNAL(loadFinished(bool)), SLOT(popupKeyboardOnAutoFocus(bool)));
现在当我尝试使用如下信号时:
popupKeyboardOnAutoFocus
我无法调出键盘,但是我可以在30秒后看到输入字段上的焦点。 我哪里错了?
答案 0 :(得分:0)
您需要稍微修改一下逻辑并使用此全局信号:
void QApplication::focusChanged(QWidget *old, QWidget *new)
其中old
是丢失了焦点的小部件,而new
是仅具有焦点的小部件。
因此,您需要举例来允许popupKeyboardOnAutoFocus
通过修改其签名来遵守该信号参数,例如:
popupKeyboardOnAutoFocus(QWidget*, QWidget*, bool)
然后你可以使用新的信号槽语法如下:
connect(app, &QApplication::focusChanged , this, &Myclass::popupKeyboardOnAutoFocus);
或者,如果您想保持简单,请将loadfinished()
连接到新的本地广告位,其中 singleshot QTimer 为30秒,然后调用{ {1}}:
类似的东西:
popupKeyboardOnAutoFocus
和delayElmnt()可以是这样的:
connect(view, SIGNAL(loadFinished(bool)), SLOT(delayElmnt()));