在输入字段中关注超时后是否有任何方法发送信号
Is there any way to send signal after focus on timeout in input field
我遇到了类似的情况,当我在任何输入字段上使用 'autofocus' 然后通过以下信号我可以调出键盘:
connect(view, SIGNAL(loadFinished(bool)), SLOT(popupKeyboardOnAutoFocus(bool)));
其中 popupKeyboardOnAutoFocus
是调出键盘的函数。
现在,我正在尝试在 30 秒超时后将焦点提供给输入字段时调出键盘,即,我有一个按钮,单击后系统等待 30 秒然后提供焦点到输入字段。
参考:
<html>
<body>
<p>Click the button to wait 3 seconds, then alert "Hello".</p>
<input type="text" id="myText" value="A text field">
<br><br><br>
<button onclick="myFunction()">Try it</button>
<script>
function myFunction() {
setTimeout(function(){
document.getElementById("myText").focus();
}, 3000);
}
</script>
</body>
</html>
现在,当我尝试使用如下信号时:
connect(view, SIGNAL(focus(bool)),SLOT(popupKeyboardOnAutoFocus(bool)));
我无法调出键盘,但 30 秒后我可以看到焦点在输入字段上。
我哪里错了?
您需要稍微修改一下您的逻辑并使用这个全局信号:
void QApplication::focusChanged(QWidget *old, QWidget *new)
其中 old
是失去焦点的小部件,new
是刚刚获得焦点的小部件。
因此,例如,您需要通过修改其签名来允许您的 popupKeyboardOnAutoFocus
遵守该信号参数,例如:
popupKeyboardOnAutoFocus(QWidget*, QWidget*, bool)
然后你可以使用新的信号槽语法如下:
connect(app, &QApplication::focusChanged , this, &Myclass::popupKeyboardOnAutoFocus);
或者,如果您想保持简单,请使用 singleshot QTimer[=36= 将您的 loadfinished()
连接到一个新的本地插槽] 30 秒,然后调用 popupKeyboardOnAutoFocus
:
类似于:
connect(view, SIGNAL(loadFinished(bool)), SLOT(delayElmnt()));
而 delayElmnt() 可以是这样的:
{
QTimer::singleShot(30000, this, SLOT(popupKeyboardOnAutoFocus()));
}
我遇到了类似的情况,当我在任何输入字段上使用 'autofocus' 然后通过以下信号我可以调出键盘:
connect(view, SIGNAL(loadFinished(bool)), SLOT(popupKeyboardOnAutoFocus(bool)));
其中 popupKeyboardOnAutoFocus
是调出键盘的函数。
现在,我正在尝试在 30 秒超时后将焦点提供给输入字段时调出键盘,即,我有一个按钮,单击后系统等待 30 秒然后提供焦点到输入字段。
参考:
<html>
<body>
<p>Click the button to wait 3 seconds, then alert "Hello".</p>
<input type="text" id="myText" value="A text field">
<br><br><br>
<button onclick="myFunction()">Try it</button>
<script>
function myFunction() {
setTimeout(function(){
document.getElementById("myText").focus();
}, 3000);
}
</script>
</body>
</html>
现在,当我尝试使用如下信号时:
connect(view, SIGNAL(focus(bool)),SLOT(popupKeyboardOnAutoFocus(bool)));
我无法调出键盘,但 30 秒后我可以看到焦点在输入字段上。 我哪里错了?
您需要稍微修改一下您的逻辑并使用这个全局信号:
void QApplication::focusChanged(QWidget *old, QWidget *new)
其中 old
是失去焦点的小部件,new
是刚刚获得焦点的小部件。
因此,例如,您需要通过修改其签名来允许您的 popupKeyboardOnAutoFocus
遵守该信号参数,例如:
popupKeyboardOnAutoFocus(QWidget*, QWidget*, bool)
然后你可以使用新的信号槽语法如下:
connect(app, &QApplication::focusChanged , this, &Myclass::popupKeyboardOnAutoFocus);
或者,如果您想保持简单,请使用 singleshot QTimer[=36= 将您的 loadfinished()
连接到一个新的本地插槽] 30 秒,然后调用 popupKeyboardOnAutoFocus
:
类似于:
connect(view, SIGNAL(loadFinished(bool)), SLOT(delayElmnt()));
而 delayElmnt() 可以是这样的:
{
QTimer::singleShot(30000, this, SLOT(popupKeyboardOnAutoFocus()));
}