2015-03-05 15 views
5

Tôi đang phát triển một ứng dụng Qt với Python và PySide. Ứng dụng chạy trên Ubuntu Linux; máy có màn hình cảm ứng.Cách kích hoạt QInputDialog kích hoạt bàn phím ảo hiển thị?

Bàn phím ảo 'trên bo mạch' được sử dụng để cho phép người dùng nhập văn bản. Theo mặc định nó bị ẩn. Khi một trường văn bản trong một ứng dụng như gedit sẽ lấy nét, nó sẽ tự động kích hoạt bàn phím ảo và nó sẽ hiển thị.

Tuy nhiên, trong ứng dụng của tôi, tôi có một QInputDialog yêu cầu người dùng nhập một số thông tin. Trong trường hợp của tôi, việc tập trung trường văn bản của QInputDialog không kích hoạt bàn phím ảo hiển thị. Làm thế nào tôi có thể đạt được điều đó?

Trả lời

3

Theo README trên máy bay, sẽ hiển thị dịch vụ DBUS để cho phép ứng dụng chuyển đổi chế độ hiển thị của nó.

Bạn có thể muốn thực hiện việc này bằng cách thêm một số thứ như trước và sau cuộc gọi getText. Ví dụ.

msg = QtDBus.QDBusMessage.createMethodCall('org.onboard.Onboard', '/org/onboard/Onboard/Keyboard','org.onboard.Onboard.Keyboard' 
       'org.onboard.Onboard.Keyboard.Show') 
QtDBus.QDBusConnection.sessionBus().send(msg) 
text, ok = QtGui.QInputDialog.getText(self, 'Input Dialog', 
      'Enter your name:') 
msg2 = QtDBus.QDBusMessage.createMethodCall('org.onboard.Onboard', '/org/onboard/Onboard/Keyboard','org.onboard.Onboard.Keyboard' 
       'org.onboard.Onboard.Keyboard.Hide') 
QtDBus.QDBusConnection.sessionBus().send(msg2) 

Bạn cũng có thể sử dụng phương thức ToggleVisible cho cả hai cuộc gọi.

Đây là cụ thể để trên tàu, cho hiển thị chung lên của bất kỳ giải pháp bàn phím ảo hoặc là tích hợp vào QT đã sử dụng các công cụ IBUS hiện hoặc phương thức nhập malitt hoặc được thực hiện bằng cách thực hiện một QPlatformInputContext như chứng minh herehere hoặc bằng cách sử dụng phương pháp tương tự hoặc bằng cách sử dụng DBUS hoặc một số giải pháp truyền thông điệp khác (cổng TCP, v.v.) để chuyển trạng thái cho bàn phím ảo cụ thể đó.

+0

Cảm ơn các con trỏ. Tôi sẽ kiểm tra phương pháp đó vào ngày mai. – Stefan

+0

Nó hoạt động cho tôi :-). Cảm ơn! – Stefan

+0

Nó không làm việc trên RHEL bất kỳ đề xuất hoặc sửa chữa ?? –

Các vấn đề liên quan