有没有办法在输入字段中关注超时后发送信号

时间:2018-02-07 08:32:46

标签: qt connect signals-slots

我有类似的情况,当我在任何输入字段上使用'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秒后看到输入字段上的焦点。 我哪里错了?

1 个答案:

答案 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()));