繁体   English   中英

如果函数 raise()、activeWindow() 和其他函数不起作用,我如何将 QFileDialog 提升到前台?

[英]How i can to raise QFileDialog to the foreground if functions raise(),activeWindow() and other didn't work?

我正在使用 go-qt 绑定(therecipe)。 我遇到这样一个问题,我无法将带有文件对话框的 window 向前推进,我尝试了我可以在 Inte.net 上找到的所有功能(及其组合),但没有一个不能帮助打开对话框。

我尝试使用这个 function:

fileDialog.SetWindowFlag(core.Qt__WindowStaysOnTopHint,true)
fileDialog.ActivateWindow()
fileDialog.SetWindowState(core.Qt__WindowActive)
fileDialog.SetWindowState(core.Qt__WindowMinimized|core.Qt__WindowActive)
fileDialog.Raise()
fileDialog.SetFocus2()

我还注意到一个特点,如果你在fileDialog.Exec()之后再次调用对话框,那么它会根据需要显示在所有windows之上。

这种情况的代码

var fileDialog = widgets.NewQFileDialog2(nil, "Open Directory", "", "")

    if fileDialog.Exec() != int(widgets.QDialog__Accepted) {
        return
    }

    if fileDialog.Exec() != int(widgets.QDialog__Accepted) {
        return
    }

我正在使用对话框的 function 代码:

func choseFile(){

var fileDialog = widgets.NewQFileDialog2(nil, "Open Directory", "", "")
fileDialog.SetAcceptMode(widgets.QFileDialog__AcceptOpen)
fileDialog.SetFileMode(widgets.QFileDialog__ExistingFile)
fileDialog.SetWindowFlag(core.Qt__WindowStaysOnTopHint,true)

if fileDialog.Exec() != int(widgets.QDialog__Accepted) {
    return
}

fmt.Println(fileDialog.SelectedFiles()[0])

}

问题可能与本机对话框有关(在我的例子中,我使用的是 ubuntu),所以我放置了标志 DontUseNativeDialog。 然后问题就解决了。

filename := widgets.QFileDialog_GetOpenFileName(ac.MainWindow,"Open Directory","","","",widgets.QFileDialog__DontUseNativeDialog)

更新:即使第一个参数为零,它也能工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM