1

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

我尝试编写如下代码。首先,我尝试了 mdiarea,然后尝试了子窗口,但都没有奏效。

mdiarea.setWindowsFlags(Qt::FramelessWindowHint);

subwindow.setWindowsFlags(Qt::FramelessWindowHint);

我也尝试过使用 Qt::CustomizedWindowHint 但即使这样也无济于事。请帮我解决一下这个。

谢谢你。

4

1 回答 1

1

尝试这个:

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::CustomizeWindowHint可能是最好的选择(没有按钮,但仍然可以移动和调整大小 - 如果您不希望它调整大小,请给它一个固定大小(setFixedSize())。

编辑:也尝试:Qt::CustomizeWindowHint|Qt::WindowTitleHint

于 2013-07-04T05:08:12.880 回答