QDialog删除标题栏

时间:2015-05-12 04:08:50

标签: 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();
}

因此主窗口变成了 -

enter image description here

对于 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);

但是QDialog的标题栏仍然存在,它看起来像 -

enter image description here

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

4 个答案:

答案 0 :(得分:4)

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

即可
dialog.setWindowFlags(Qt::CustomizeWindowHint);

您也可以使用特定标志对其进行OR操作,以进一步自定义窗口外观,如文档中所述。

答案 1 :(得分:3)

在朋友的帮助下解决了这个问题,并为有需要的人发布答案以供参考 -

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

void MainWindow::on_pushButton_2_clicked()
{
    Dialog dialog;
    dialog.setModal(true);
    dialog.setWindowFlags(Qt::FramelessWindowHint);
    dialog.exec();
}

这就是诀窍 -

enter image description here

和对话框 -

enter image description here

答案 2 :(得分:1)

我在设置Qt :: FramelessWindowHint标志时遇到了一些问题,所以我最终重写了resizeEvent而不是设置这个标志:

void  MyDialog::resizeEvent(QResizeEvent*)
{
    this->setMask(QRegion(this->rect()));
}

答案 3 :(得分:-1)

Dialog->setWindowFlags(Qt::FramelessWindowHint | Qt::Dialog);