QDialog去掉标题栏
QDialog remove title bar
网络上充斥着类似的问题,但我没有看到任何适合解决手头问题的东西。
在我的 QT-C++ 应用程序中,我有一个带有一些功能的主window 表单,有一个 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();
}
结果主要window变成了-
对于dialog.cppwindow,我设置了-
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的标题栏还在,看起来像-
我哪里错了???关于如何删除关闭按钮和标题栏的任何想法???
在朋友的帮助下解决了,张贴答案以供有需要的人参考---
在 mainwindow.cpp 中,当按下 Fetch 按钮时,qdialog 打开,我在那里设置了属性;
void MainWindow::on_pushButton_2_clicked()
{
Dialog dialog;
dialog.setModal(true);
dialog.setWindowFlags(Qt::FramelessWindowHint);
dialog.exec();
}
这成功了 --
和对话框 --
我需要为对话框做与这个问题相同的事情,但我想要对话框上的边框没有 window 栏。解决方案其实很简单。只需将对话框的标志设置为 Qt::CustomizeWindowHint:
dialog.setWindowFlags(Qt::CustomizeWindowHint);
您还可以将其与特定标志进行 OR 操作,以进一步自定义 windows 外观,如文档中所述。
我在设置 Qt::FramelessWindowHint 标志时遇到了一些问题,所以我最终覆盖了 resizeEvent 而不是设置这个标志:
void MyDialog::resizeEvent(QResizeEvent*)
{
this->setMask(QRegion(this->rect()));
}
Dialog->setWindowFlags(Qt::FramelessWindowHint | Qt::Dialog);
网络上充斥着类似的问题,但我没有看到任何适合解决手头问题的东西。
在我的 QT-C++ 应用程序中,我有一个带有一些功能的主window 表单,有一个 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();
}
结果主要window变成了-
对于dialog.cppwindow,我设置了-
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的标题栏还在,看起来像-
我哪里错了???关于如何删除关闭按钮和标题栏的任何想法???
在朋友的帮助下解决了,张贴答案以供有需要的人参考---
在 mainwindow.cpp 中,当按下 Fetch 按钮时,qdialog 打开,我在那里设置了属性;
void MainWindow::on_pushButton_2_clicked()
{
Dialog dialog;
dialog.setModal(true);
dialog.setWindowFlags(Qt::FramelessWindowHint);
dialog.exec();
}
这成功了 --
和对话框 --
我需要为对话框做与这个问题相同的事情,但我想要对话框上的边框没有 window 栏。解决方案其实很简单。只需将对话框的标志设置为 Qt::CustomizeWindowHint:
dialog.setWindowFlags(Qt::CustomizeWindowHint);
您还可以将其与特定标志进行 OR 操作,以进一步自定义 windows 外观,如文档中所述。
我在设置 Qt::FramelessWindowHint 标志时遇到了一些问题,所以我最终覆盖了 resizeEvent 而不是设置这个标志:
void MyDialog::resizeEvent(QResizeEvent*)
{
this->setMask(QRegion(this->rect()));
}
Dialog->setWindowFlags(Qt::FramelessWindowHint | Qt::Dialog);