网上充斥着类似的问题,但对于所有我看来,没有什么能适合解决手头的问题。
在我的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();
}
因此主窗口变成了 -
对于 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的标题栏仍然存在,它看起来像 -
我哪里错了?关于如何删除关闭按钮和标题栏的任何想法???
答案 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();
}
这就是诀窍 -
和对话框 -
答案 2 :(得分:1)
我在设置Qt :: FramelessWindowHint标志时遇到了一些问题,所以我最终重写了resizeEvent而不是设置这个标志:
void MyDialog::resizeEvent(QResizeEvent*)
{
this->setMask(QRegion(this->rect()));
}
答案 3 :(得分:-1)
Dialog->setWindowFlags(Qt::FramelessWindowHint | Qt::Dialog);