2016-03-28 15 views
0

Sanal klavye parçacığına sahip bir dokunmatik ekran kiosk sistemi üzerinde çalışma. Tüm diyaloglarda, sanal klavye dokunmayan girdinin tek yöntemidir. Şimdi QFileSystemModel kullanarak dosya adlarını görüntülemek için bir QTreeView üzerinde çalışıyorum ve Yeni Ad (Ad dışında gizli diğer tüm sütunlar) adlı bir sütun ekledim. Ben QEreeView için atanan temsilci için createEditor() ve destroyEditor() öğesini geçersiz kıldım ve model için data() ve setData() öğesini geçersiz kıldım. CreateEditor() geçersiz kılma, yerel QLineEdit nesnesine bir işaretçi döndürür; böylece düzenleme sonuçlarını denetleyebilirim (bunları, bu yeni sütunun modelimin veri nesnesine bağlayarak).Qt5 QTreeView sanal klavye ile düzenlenebilir

Fiziksel klavyem, verilen satır için Yeni Ad hücresinde değişiklikler yapabilir, ancak odak noktasını kaybetmeden sanal klavyemi nasıl yazacağımı ve öğedeki destroyEditor() öğesini nasıl arayacağımı anlayamıyorum düzenleme. Bunun nasıl yapılabileceği hakkında bir fikrin var mı? Qt kodunu kazdım ama şu ana kadar şansım yok.

cevap

0

Sanal klavyenin odaklanabileceği widget'lar bulunmamalıdır. Odak nötr olmalıdır. Odağı çalmayacak o zaman. This answer, odağı çalmayan ve odaklanan küçük aracına gönderilen tuşa basma olaylarını sentezleyen bir çalışma örneğine sahiptir.

+0

Giriş için çok teşekkürler. Farklı bir yönde sürüklendim, ancak kodumu değiştirdim, böylece sanal klavye parçacığının kurucuları ve düğme widget'larının tümü şu iki satıra sahip olacak: setWindowFlags (Qt :: X11BypassWindowManagerHint); setFocusPolicy (Qt :: NoFocus); Mükemmel çalışır. Tekrar teşekkürler. – bmahf

+0

Btw, bunu hem klavye hem de tuş yapıcısına koymalıydım ya da işe yaramadı gibi görünüyor. Ayrıca, her ikisi de gerekli değildi, bunların hiçbiri kendi başına çalışmamıştı. – bmahf

+0

Btw, Şimdi görüyorum bir sorun daha var. Öğeyi tıklattığımda, bazı başlangıç ​​metinleriyle doldurmak istiyorum ve öğeden uzaklaşıp daha sonra tekrar tıkladığımda, boş olmasını istemiyorum ancak metni göstermeye devam etmesini istiyorum. editör uygulanmadan önce hücrede vardı. CreateEditor() 'da, önce QLineEdit nesnesini göstermek istediğim metne ayarlıyorum ve daha sonra geri getirdim. Ama gösterilen bir metin yok. Qt arayana geri döndüğünde boş görünecek gibi görünüyor. – bmahf