簡體   English   中英

在全屏模式下運行 Qt 應用程序時出現“黑屏”問題

[英]Issue with "blanking screen" when running Qt application in fullscreen mode

我們有一個基於 Qt 的瀏覽器應用程序,它在底層使用 QWebEninge。 目前,我們正在解決一個問題,即每次窗口獲得或失去焦點時屏幕都會變黑(例如,每次調用 QVirtualKeyboard 時)。 根據Qt 的建議,我們嘗試在調用QMainWindow::showFullScreen()之前實現QWindowsWindowFunctions::setHasBorderInFullScreen 但這會導致可用窗口區域的不可接受的減少,例如 1918x1078 而不是 1920x1080(此修復將 WS_BORDER 添加到窗口標志)。

在一些實驗中,如果發現問題也 - 並且僅 - 出現,如果我使用QMainWindow::show()同時設置窗口的大小,使其與屏幕的分辨率完全匹配。 換句話說:超越屏幕的界限不是問題。 因此,我的想法是在我的 QMainWinow 周圍獲得這樣一個WS_BORDER並以某種方式調整/放置它,以便可用區域覆蓋屏幕。

我的問題是:

  • 有沒有更好的解決方案來擺脫這種情況?
  • 如果不是:如何為“正常” QMainWinodw獲得WS_BORDER 我嘗試在調用QMainWinodw::show()之前和之后使用Get/SetWindowLongPtr(QMainWindow::winId(), GWL_STYLE/GWL_EXSTYLE) QMainWinodw::show() ,但這沒有幫助。

提前致謝。

作為一種解決方法,我嘗試使用 Qt::WindowStaysOnTopHint 放置一個隱藏的(不透明的)迷你窗口(0x0px) - 有效。 如果有人知道更好的解決方案,請告訴我們。 謝謝。

編輯這是一個意外發現:Windows 的放大鏡工具由於某種原因處於活動狀態,我注意到當放大鏡位於我的應用程序 Windows 前面時不會出現問題。 作為結論,我嘗試放置一個“始終在頂部”的窗口並且可以看到它起作用了。 最后我想隱藏這個“覆蓋”,這是通過將它的寬度/高度設置為 0px/0px 來完成的。 但是,似乎存在一些關於 Qt 和范圍內系統的 Intel HD 圖形適配器的通用問題。 據我所知,只有當(全屏)窗口的大小與顯示器的幾何形狀相匹配時才會出現問題 - 將其大小調整至少超出顯示器幾何形狀的像素有所幫助,但這在我們的情況下是沒有選擇的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM