Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.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
窗口标志在Qt中的MDI区域不起作用_Qt - Fatal编程技术网

窗口标志在Qt中的MDI区域不起作用

窗口标志在Qt中的MDI区域不起作用,qt,Qt,我正在使用Qt并创建一个包含多个子窗口的GUI。我正在使用MDI区域进行同样的操作。我想隐藏mdi子窗口的顶部工具栏,但使用窗口标志没有帮助 我试着按照如下方式编写代码。首先我尝试了mdiarea,然后尝试了subwindow,但都没有成功 mdiarea.setWindowsFlags(Qt::FramelessWindowHint) setWindowsFlags(Qt::FramelessWindowHint) 我也尝试过使用Qt::CustomizedWindowHint,但即使这样也没

我正在使用Qt并创建一个包含多个子窗口的GUI。我正在使用MDI区域进行同样的操作。我想隐藏mdi子窗口的顶部工具栏,但使用窗口标志没有帮助

我试着按照如下方式编写代码。首先我尝试了mdiarea,然后尝试了subwindow,但都没有成功

mdiarea.setWindowsFlags(Qt::FramelessWindowHint)

setWindowsFlags(Qt::FramelessWindowHint)

我也尝试过使用Qt::CustomizedWindowHint,但即使这样也没有帮助。请帮我做这个

谢谢。

试试这个:

mdiArea->addSubWindow(new QLabel("Qt::FramelessWindowHint"), Qt::FramelessWindowHint);
您不希望将MDI区域本身设置为无框架窗口,因为它可能是嵌入到另一个窗口中的小部件。。。它很可能已经没有框架了

您的“子窗口”设置应该有效。。。但是
addSubWindow(myWidget)
实际上将传入的小部件包装在真正的子窗口中,所以这就是问题所在。Qt允许您将窗口标志作为
addSubWindow()
的第二个参数传入,这些标志将转到实际的子窗口

请注意,对于无框窗口,您不能拖动窗口来移动它,也不能抓住边缘来调整它的大小,因为没有任何东西可供您抓住

如果您只希望最小化和最大化按钮消失(但仍然希望关闭按钮),请尝试传递
Qt::Dialog

还可以尝试以下方法:

addSubWindow(new QLabel("Qt::Tool"), Qt::Tool);
addSubWindow(new QLabel("Qt::Tool|Qt::CustomizeWindowHint"), Qt::Tool|Qt::CustomizeWindowHint);
addSubWindow(new QLabel("Qt::Dialog"), Qt::Dialog);
我认为
Qt::Tool | Qt::customizeWindowint
可能是最好的选择(没有按钮,但仍然可以移动和调整大小-如果不想调整大小,请给它一个固定大小(
setFixedSize()

编辑:同时尝试:
Qt::CustomizeWindowint | Qt::WindowTitleHint
尝试以下操作:

mdiArea->addSubWindow(new QLabel("Qt::FramelessWindowHint"), Qt::FramelessWindowHint);
您不希望将MDI区域本身设置为无框架窗口,因为它可能是嵌入到另一个窗口中的小部件……它很可能已经没有框架了

“子窗口”的设置应该可以工作……但是
addSubWindow(myWidget)
实际上包装了在真实子窗口中传递的小部件,所以这就是问题所在。Qt允许您将窗口标志作为
addSubWindow()
的第二个参数传递给真实子窗口

请注意,对于无框窗口,您不能拖动窗口来移动它,也不能抓住边缘来调整它的大小,因为没有任何东西可供您抓住

如果您只希望最小化和最大化按钮消失(但仍然希望关闭按钮),请尝试传递
Qt::Dialog

还可以尝试以下方法:

addSubWindow(new QLabel("Qt::Tool"), Qt::Tool);
addSubWindow(new QLabel("Qt::Tool|Qt::CustomizeWindowHint"), Qt::Tool|Qt::CustomizeWindowHint);
addSubWindow(new QLabel("Qt::Dialog"), Qt::Dialog);
我认为
Qt::Tool | Qt::customizeWindowint
可能是最好的选择(没有按钮,但仍然可以移动和调整大小-如果不想调整大小,请给它一个固定大小(
setFixedSize()


编辑:同时尝试:
Qt::CustomizeWindowint | Qt::WindowTitleHint

您所说的“顶部工具栏”是什么意思?A是上面有按钮的区域(如Microsoft Office程序中的功能区界面)。你是说标题栏吗?是的,标题栏…很抱歉混淆了两件事…谢谢你的回复…你说的“顶部工具栏”是什么意思?A是有按钮的区域(如Microsoft Office程序中的功能区界面)。你是说?是的,标题栏…抱歉混淆了两件事…谢谢你的回复…谢谢你的回复。但问题是我正在使用Qt Designer创建mdi子窗口,因此我尝试直接在代码中编写。如果我在Designer中创建了mdi区域,有没有办法做到这一点…在我的示例中(虽然从我发布的内容中看不到)我的MDIArea是在Designer中创建的,但我的小部件是在代码中添加的。如果您的小部件(子窗口)也是在Designer中创建的,请尝试以下操作:mySubWindow->parentWidget()->setWindowFlags(…);(请记住,您的小部件实际上是包装在真正的MDI子窗口中的,希望能够利用这一点-但我没有测试它)。嘿,我找到了解决方案。我使用了激活的插槽子窗口,并在其中为mdiArea.activatedSubwindow->setWindowFlags(Qt::FramelessWindowHint)…非常感谢您的帮助…:)感谢您的回复。但问题是我正在使用Qt Designer创建mdi子窗口,因此我尝试直接在代码中编写。如果我在Designer中创建了mdi区域,有没有办法做到这一点…在我的示例中(尽管从我发布的内容中看不到)我的MDI区域是在Designer中创建的,但我的小部件是在代码中添加的。如果您的小部件(子窗口)也是在Designer中创建的,那么请尝试以下操作:mySubWindow->parentWidget()->setWindowFlags(…);(请记住,您的小部件实际上是包装在真正的MDI子窗口中的,希望能够利用这一点,但我尚未对其进行测试).嘿,我找到了解决方案。我使用了激活的插槽子窗口,并在其中提供了MDAREA.activatedSubwindow->setWindowFlags(Qt::FramelessWindowHint)…非常感谢您的帮助…:)