Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Windows 8.1上显示模式子窗口时,如何避免Qt Quick父窗口变为透明窗口?_Qt_Window_Windows 8.1_Qml_Qt Quick - Fatal编程技术网

在Windows 8.1上显示模式子窗口时,如何避免Qt Quick父窗口变为透明窗口?

在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

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
            {
                    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即使我使用
对话框
而不是
窗口
,行为也是一样的。当你全屏打开父窗口时,我可以想象一旦你打开子窗口,全屏就会退出。也许先试试非全屏,看看是否有同样的效果。