我有qml按钮文件,当键盘可见时我希望在键盘上方可见。
我只想知道我应该如何处理我的QmlApplicationViewer,以便我的小qml块始终可见于所有其他应用程序之上,但您仍然可以访问下面的应用程序。
我已经实现了一种方法,当键盘可见时文件变得可见,我可以轻松地将其放在键盘上方,但现在我正在努力防止它窃取焦点并关闭键盘,因为这一刻键盘打开我的按钮出现,键盘关闭。当我关闭我的应用程序时,按钮消失,键盘在我最初打开它的应用程序中重新打开。我希望这是一个补充键盘功能的后台任务,按钮将允许语音输入。
main.qml:
import QtQuick 1.1
import com.nokia.symbian 1.1
Button{
signal keyActive()
x: 0
y: 0
text: "Voice"
property bool bob: inputContext.visible
onBobChanged: console.log("keyboard" + bob), bob ? keyActive() : null
}
main.cpp中:
#include <QtGui/QApplication>
#include "qmlapplicationviewer.h"
#include <QObject>
#include <QGraphicsObject>
Q_DECL_EXPORT int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QmlApplicationViewer viewer;
viewer.setMainQmlFile(QLatin1String("qml/topwidget/main.qml"));
viewer.setWindowFlags(Qt::WindowStaysOnTopHint);
viewer.setAttribute(Qt::WA_ShowWithoutActivating);
viewer.move(10, 20);
viewer.releaseKeyboard();
viewer.show();
QObject *rootObject = viewer.rootObject();
QObject::connect(rootObject, SIGNAL(keyActive()), &viewer, SLOT(raise()));
return app.exec();
}
PS。我知道当键盘打开和关闭时,我想知道的是如何在没有键盘自动关闭的情况下显示我的按钮?
答案 0 :(得分:0)
您正在操纵x
和y
,但您想要的是控制重叠,即z
。因此,通过为其提供特殊的z
值,您可以影响始终位于最前面的内容。见这里: