QDialog删除标题栏

Ric*_*het 4 c++ qt4 qdialog

网络上充斥着类似的问题,但是对于我来说,没有什么适合解决当前问题的方法。

在我的QT-C ++应用程序中,我有一个带有某些功能的主窗口形式,有一个QPushButton,按此按钮可以打开QDialog。现在,表单中的所有功能都可以正常工作,但是我希望最终的应用程序没有任何顶部标题栏。即没有关闭/最小化/最大化按钮。

在我的main.cpp文件中,

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.setWindowFlags(Qt::Window | Qt::FramelessWindowHint);
    w.show();
    return a.exec();
}
Run Code Online (Sandbox Code Playgroud)

结果,主窗口变为-

在此处输入图片说明

对于dialog.cpp窗口,我设置了-

Dialog::Dialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Dialog)
{
    ui->setupUi(this);
    //QDialog Dialog(0, Qt::CustomizeWindowHint|Qt::WindowTitleHint);  --- used this also; no use

    QDialog Dialog(0, Qt::FramelessWindowHint | Qt::Dialog);
Run Code Online (Sandbox Code Playgroud)

但是QDialog的标题栏仍然保留,看起来像-

在此处输入图片说明

我要去哪里错了?关于如何删除关闭按钮和标题栏的任何想法?

Pau*_*arr 5

对于对话框,我需要执行与此问题相同的操作,但是我希望对话框上没有窗口栏的边框。解决方案实际上非常简单。只需将对话框的标志设置为Qt :: CustomizeWindowHint:

dialog.setWindowFlags(Qt::CustomizeWindowHint);
Run Code Online (Sandbox Code Playgroud)

您也可以将其与特定标志进行“或”运算,以进一步自定义文档中提到的Windows外观。


Ric*_*het 4

在朋友的帮助下解决了这个问题,将答案贴出来供有需要的人参考---

在 mainwindow.cpp 中,当按下 Fetch 按钮时,qdialog 将打开,我已在那里设置属性;

void MainWindow::on_pushButton_2_clicked()
{
    Dialog dialog;
    dialog.setModal(true);
    dialog.setWindowFlags(Qt::FramelessWindowHint);
    dialog.exec();
}
Run Code Online (Sandbox Code Playgroud)

这招成功了——

在此输入图像描述

和对话框——

在此输入图像描述