qml程式在linux上無法接收輸入

2021-10-08 20:10:45 字數 568 閱讀 7502

之前在改乙個老專案時,發現windows上正常的qt程式,在linux上存在很多bug,其中就包含無法接收輸入的問題。

在textinput元件中監控focus改變,通過調整背景色監控是否有真正改變掉,發現的確是有獲取焦點的,但是無法接收輸入。

在陷入僵局的情況下,我嘗試性的呼叫了show方法,發現可以輸入了,但是show方法在這個專案中有其他bug。

又陷入僵局,突然想到既然和平台相關,很可能是flags的問題,於是乙個個遮蔽flags,並且在官方文件檢視該flags的問題原因。終於發現了問題。

視窗的flags被設定了qt::x11bypasswindowmanagerhint,官方描述為:

qt::x11bypasswindowmanagerhint

完全繞過視窗管理器。這將導致乙個完全不被管理的無邊界視窗,

除非您手動呼叫qwidget::activatewindow(),否則沒有鍵盤輸入)。

刪除掉這個flag之後,我呼叫show()方法會導致視窗周圍有乙個**的邊界的問題也被解決了,我的桌面環境是manjaro kde, 在deepin環境似乎沒有問題

在windows上開發linux程式

由於工作需要,希望能把現有 移植到linux。基於此目的,最近做了些調研和實驗。由於自己並沒有太多的linux下的工作經驗,所以不考慮直接在linux平台下工作,開發。好在現在vscode,visualstudio目前都支援跨平台開發。vscode有一套remote 的擴充套件,可以在本機linux...

db2在linux上無法啟動

在redhat as4上裝了個db2 裝好後發現無法啟動,使用db2start的時候報錯 sql6048n a communication error occurred during start or stop database manager processing.sql1032n no star...

在Linux上在mono平台下執行C 程式

乙個名字為mono的專案,它的目標就是把.net及其程式語言移植到非windows的平台上。在任何乙個平台 作業系統 硬體體系 上,編寫和執行程式的三個最根本的需求是庫 編譯器 直譯器 執行環境。庫以類和方法 函式 的形式提供常用的例 程,簡化大型程式的編寫。net框架也不例外,包含了許多類庫。另外...