【问题标题】:How to hide titlebar of the QDialog window? [duplicate]如何隐藏 QDialog 窗口的标题栏? [复制]
【发布时间】:2014-11-18 21:16:36
【问题描述】:

我在我的 qt 应用程序中显示一个对话框,菜单操作单击窗口显示完美,但我想隐藏它的标题栏,因为它只是主窗口内的一个子窗口。

我试过了:

this->setWindowFlags(Qt::Window |Qt::FramelessWindowHint);

在对话框构造函数中:

ui->setupUi(this);
this->setWindowState (Qt::WindowActive);
setWindowModality(Qt::ApplicationModal);
setAttribute (Qt::WA_DeleteOnClose);
this->setWindowFlags(Qt::Window |Qt::FramelessWindowHint) ; // 

这确实删除了标题栏,但它也隐藏了主窗口,这对我的应用程序不利。

如何在不影响应用程序基本主窗口的情况下隐藏对话框标题栏?

【问题讨论】:

标签: qt dialog hide titlebar


【解决方案1】:

您缺少 CustomizeWindowHint。

从 QWidget 的source code here(第 1035 行)可以看出,它根据该标志决定做什么。所以我建议试试这个:-

setWindowFlags(Qt::Window | Qt::CustomizeWindowHint); 

【讨论】:

  • 您的建议与 this->setWindowFlags(Qt::Window |Qt::FramelessWindowHint) 的工作方式相同,它确实隐藏了窗口的标题栏,但也使应用程序的主窗口错位。
  • thanx 你的答案很好,但它不适合我的应用程序,因为我想隐藏“对话框”的标题栏而不是窗口。您的答案适用于主窗口小部件
【解决方案2】:
 QDialog *dialog(new QDialog /* this should be your dialog class youve created obviously*/));
 dialog->setWindowFlags(Qt::FramelessWindowHint | Qt::Dialog);
 dialog->show();

【讨论】:

    猜你喜欢
    • 2012-05-31
    • 2021-11-04
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-04
    相关资源
    最近更新 更多