在Windows 8.1上显示模式子窗口时,如何避免Qt Quick父窗口变为透明窗口?
Qt版本 5.3.2 代码在Windows 8.1上显示模式子窗口时,如何避免Qt Quick父窗口变为透明窗口?,qt,window,windows-8.1,qml,qt-quick,Qt,Window,Windows 8.1,Qml,Qt Quick,Qt版本 5.3.2 代码 import QtQuick 2.2 import QtQuick.Controls 1.2 import QtQuick.Window 2.2 ApplicationWindow { id:root visible: true visibility:Window.FullScreen color:"red" Text
import QtQuick 2.2
import QtQuick.Controls 1.2
import QtQuick.Window 2.2
ApplicationWindow {
id:root
visible: true
visibility:Window.FullScreen
color:"red"
Text
{
anchors.fill: parent
color:"white"
font.pixelSize: 32
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
text:"Click to show modal child window"
}
MouseArea{
anchors.fill: parent
onClicked:childWindow.visible=!childWindow.visible
}
Window{
id:childWindow
visible:false
width:640
height:480
flags:Qt.Dialog
modality: Qt.ApplicationModal
title: "Modal child window"
Text
{
anchors.fill: parent
font.pixelSize: 32
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
text:"Modal child window"
}
}
}
问题
当通过单击鼠标区域显示模式子窗口时,父ApplicationWindow
将变为透明。即使取消子模式窗口,也不会显示ApplicationWindow
单击之前
单击后
如您所见,父窗口已变得透明。仅显示模式子窗口。取消子对话框将显示一个完全透明的窗口。再次单击屏幕上的任何区域将显示模式对话框。(因为onClicked:childWindow.visible=!childWindow.visible
)。这表明应用程序窗口存在,但已变得透明。如何避免父窗口变得透明
更新
当父窗口是透明的,并且如果我切换到桌面(按Windows+D)并再次切换到应用程序,则父窗口的透明度将丢失,并且父窗口的背景(本例中为红色)将再次显示 那是哪个qt版本?可能是Windows指定的行为?例如,在我的Linux中,当我点击红色框时,KDE主窗口变暗。在我的Win7机器上,顶层窗口保持在背景中,即行为是“正确的”。同样的情况也发生在我的苹果机上。可能是Win8行为(正如@folibis所指出的),也可能是bug。你试过用对话框而不是窗口吗?IMO不是个坏主意吗?@FrankOsterfeld Qt版本是5.3.2,我已经更新了我的问题@folibis我不认为这是Windows特有的行为。例如,如果我在Windows 8.1上从Qt creator打开一个文件对话框,Qt creator窗口就不会变得透明@BaCaRoZzo即使我使用
对话框
而不是窗口
,行为也是一样的。当你全屏打开父窗口时,我可以想象一旦你打开子窗口,全屏就会退出。也许先试试非全屏,看看是否有同样的效果。