2017-07-07 591 views
0

我正在嘗試在樹莓派上使用qt虛擬鍵盤,並且有問題召喚鍵盤。qt虛擬鍵盤不顯示

我得按如下方式允許使用虛擬鍵盤的配置項目:

//In the PRO file 
QT += qml quick quickcontrols2 xml 
static { 
    QT += svg 
    QTPLUGIN += qtvirtualkeyboardplugin 
} 

CONFIG += c++11 disable-desktop 

我覺得disable-desktop應該足以召喚虛擬鍵盤,至少這是我的假設。

第一行中我main文件是:

qputenv("QT_IM_MODULE", QByteArray("qtvirtualkeyboard")); 

這將確保模塊被加載。我已經驗證沒有這一行,虛擬鍵盤模塊的程序barfs沒有找到錯誤。

現在,我有一個簡單的組件,其中有一個文本字段:

import QtQuick 2.0 
import QtQuick.Layouts 1.3 
import QtQuick.Controls 2.1 
import QtQuick.VirtualKeyboard 2.1 

TextField { 
      id: idField 
      width: 80 
      height: 30 
      placeholderText: qsTr("ID") 
      Layout.maximumHeight: 30 
      Layout.minimumHeight: 30 
      Layout.minimumWidth: 80 
      Layout.maximumWidth: 80 
      focus: true 
      anchors.horizontalCenter: parent.horizontalCenter 
      inputMethodHints: Qt.ImhDigitsOnly 
     } 

當我點擊它,鍵盤不出來。我想知道爲了召喚鍵盤是否需要額外的設置?

回答

3

disable-desktop應該作爲一個參數構建Qt虛擬鍵盤,不使用鍵盤的應用程序之前被傳遞到qmake

qmake CONFIG+=disable-desktop qtvirtualkeyboard.pro 

不過,我認爲this code會自動處理,對於嵌入式設備(這意味着預先構建/打包的Qt應該可以工作)。

當使用disable-desktop,它給你提供了InputPanel

import QtQuick 2.7 
import QtQuick.Controls 2.0 
import QtQuick.VirtualKeyboard 2.0 

ApplicationWindow { 
    id: window 
    visible: true 
    width: 640 
    height: 480 

    TextField { 
     anchors.centerIn: parent 
    } 

    InputPanel { 
     id: inputPanel 
     z: 89 
     y: active ? parent.height - height : parent.height 
     anchors.left: parent.left 
     anchors.right: parent.right 
    } 
} 

有此here的更高級的例子。的文檔的一部分This提及它,下一章還具有一個例子:

在應用程序集成的方法,所述應用要求在下面的章節說明來創建輸入面板的一個實例。

+0

我已經嘗試了與虛擬鍵盤相同的設備上的qt示例,他們似乎工作,很清楚,鍵盤構建正確。 –

+1

我忘了一件很重要的事情..:D – Mitch

+0

是的,就是這樣。我完全錯過了需要提供InputPanel。 –