始终可见的 QML

3

我有一个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. 我知道键盘何时打开和关闭,我想知道的是如何在不自动关闭键盘的情况下显示我的按钮?


你不能安装一个事件过滤器或以某种方式订阅键盘事件吗?然后,一旦你被键盘状态的更改打断,你可以相应地处理它:http://www.developer.nokia.com/Community/Discussion/showthread.php?235025-Qt-N97-Detecting-keyboard-open - ddoor
是的,但我的问题是如何处理它? - Gerharddc
你有任何想法吗,一旦我知道键盘是活动的,我该如何处理它? - Gerharddc
1个回答

0

这似乎只与在查看器内绘图有关,但不会影响查看器本身相对于其他应用程序和操作系统的渲染组件的位置。 - Gerharddc

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接