maliit键盘 - 在信件上的黑匣子

时间:2015-10-22 14:49:26

标签: qt qml qt5

我设法从github安装maliit-server和键盘插件。我运行服务器然后像这样的例子

export QT_IM_MODULE=Maliit
maliit-server -software &
maliit-exampleapp-plainqt

键盘按预期显示,但键盘中央出现黑框。我不知道/无法找到这个盒子的来源。

Maliit keyboard - black box

我正在使用Xubuntu (14.04 LTS)Qt 5.5。有没有人遇到过这个问题?

2 个答案:

答案 0 :(得分:2)

这可能是扩展键盘面板maliit-keyboard-extended.qml的QQuickView。窗口处理代码似乎非常错误(参见inputmethod.cpp)。

请注意,此代码是针对某些特定平台(几年前)编写的,可能需要适应其他用例。

答案 1 :(得分:0)

黑匣子是扩展键盘面板。出于某种原因,它在使用之前是一个正方形(其目的是在fx上按住A键时显示其他特殊字符)。

它应该是透明的,但似乎透明度不适合你,因为键盘本身应该有半透明背景,而不是黑色。

然而,透明度不是真正的问题,因为透明度对我有用,但扩展面板仍然阻止了输入。起初它似乎不是Linux Mint的问题,但这仅仅是因为它被放置在其他地方。仍然阻止该区域的鼠标输入,恰好不在键盘上。

在Windows上我通过添加:

解决了这个问题
view->show();
view->hide();

为:

QQuickView *getOverlaySurface (MAbstractInputMethodHost *host, QQuickView *parent)
{
    QScopedPointer<QQuickView> view(new myQQuickView (0));

    view->setTransientParent(parent);

    host->registerWindow (view.data(), Maliit::PositionOverlay);

    makeQuickViewTransparent(view.data());

    // Overlays should be hidden from the start, otherwise it may block 
    // underlying surface despite the overlay being empty. For hide() to work 
    // it needs to be shown first. 
    view->show();
    view->hide();

    return view.take ();
}
inputmethod.cpp

中的

这仅适用于Windows。在Linux Mint上,它不起作用,也会导致透明度失败。