如何永久删除主窗口标题栏?

Posted

技术标签:

【中文标题】如何永久删除主窗口标题栏?【英文标题】:How to remove mainwindow titlebar permanently? 【发布时间】:2016-02-09 10:36:30 【问题描述】:

当我将 mainwindow 设置为 fullscreen() 时,标题栏消失,这就是我想要的。但是当打开一个对话框时,主窗口标题栏再次出现,这在我的情况下是不可取的。我尝试设置几个 Qt::windowflags 但它们不起作用。任何帮助将不胜感激。

【问题讨论】:

如果一个窗口是全屏的,则没有其他窗口可以覆盖它。由于对话框强行移至顶部,原始窗口将失去其全屏状态。 【参考方案1】:

这里快速回答,你必须这样做

int main(int argc, char *argv[])

  QApplication a(argc, argv);

  MyMainWindow window;
  window.setWindowFlags(Qt::Window | Qt::FramelessWindowHint);
  window.show();

PS:我从网上了解到的是,结果有点模棱两可。让我们知道结果

【讨论】:

对我不起作用。它只是缩小了我的应用程序窗口。没有别的了。 可以用 QDialog 做些什么而不是弄乱主窗口吗?因为它在没有对话框的情况下工作正常。 我想通过这个弹出一个数字小键盘。有没有其他解决方法? 您能否在问题中包含当前状态的图像?理解会很有帮助。另外,您是否像这个答案一样一开始就setWindowsFlags()?还是你后来设置的? 我像上面一样在 main.cpp 中设置了标志。现在我通过向 dialog.setWindowFlags(Qt::WindowStaysOnTopHint|Qt::X11BypassWindowManagerHint |Qt::FramelessWindowHint);【参考方案2】:

要将对话框移动到中心: 1.调用小部件应将中心坐标传递给对话窗口。 我通过调用对话函数来传递坐标来完成它。 在 widget.cpp 中:

dialog->centre(this->width()/2,this->height()/2);

2.在 dialog.cpp 中:

`centre(int x,int y)

    width =x;     //store in some global variable
    height=y;
`

3.在dialog.cpp的show事件中:

this->move(width,height);

完成。它会将对话框放置在小部件的中心。

【讨论】:

以上是关于如何永久删除主窗口标题栏?的主要内容,如果未能解决你的问题,请参考以下文章

如何获取主应用程序窗口标题栏的高度?

如何隐藏主窗口标题栏并在 kivy 框架中放置透明背景?

如何完全删除窗口标题栏?

IntelliJ Idea 主菜单栏从 Mac 菜单栏移出

如何在任务栏中显示 QMainWindow

如何给无标题栏窗口加上标题栏(例如给某些无标题栏游戏加上 包括最小化 最大化 关闭按钮)