【发布时间】:2016-04-22 23:57:03
【问题描述】:
我的主窗口上有一个按钮,允许用户选择要打开的文件。
std::fstream infile;
std::string filename = QFileDialog::getOpenFileName(this, tr("TXT file"), qApp->applicationDirPath (),tr("TXT File (*.txt)")).toStdString();
if (filename.empty())
return;
infile.open(filename, std::fstream:: in | std::fstream::out | std::fstream::app);
if (true) {
//Does stuff with the data
}
infile.close();
这通常工作正常,我在以前的 gui qt 应用程序中使用过它。然而,对于这个应用程序,主窗口(根据它的设置)设置它的 windowsflags 如下:
setWindowFlags(Qt::FramelessWindowHint| Qt::WindowStaysOnTopHint);
这会产生一个问题,因为主窗口试图始终保持在顶部(从而阻止打开的文件窗口出现)。如果没有 staysontop 标志,文件对话框将正常工作。
有没有办法暂时禁用此标志(这样我可以在单击按钮时禁用,然后在文件对话框完成时重新启用)?
setWindowFlags(Qt::FramelessWindowHint| ~Qt::WindowStaysOnTopHint);
这似乎是最常见的建议解决方案,但对我不起作用。我相信这是因为必须重新创建窗口才能注册窗口标志的更改 - 但是,我相信如果我杀死主窗口,文件对话框也会超出范围?
总之,我试图找到一种解决方法,让主窗口始终位于顶部,除非我尝试选择要打开的文件(文件对话框由按钮触发)。
【问题讨论】: