Qt C++ MainWindow::setMenuWidget not working

Qt C++ MainWindow::setMenuWidget not working

本文关键字:not working setMenuWidget Qt MainWindow C++      更新时间:2023-10-16

我正在尝试添加一个自定义小部件与MainWindow::setMenuWidget的帮助。
但是这不能正常工作。
代码如下:
MainWindow构造函数的一部分:

MyMenuBar *menu = new MyMenuBar();
connect(menu,SIGNAL(Close_Window()),this,SLOT(close()));
connect(menu,SIGNAL(Minimized_Window()),this,SLOT(hide()));
menu->setWindowFlags(Qt::FramelessWindowHint);
this->setMenuWidget(menu);
menu->show();  

所以,它编译成功,启动,但我的小部件没有出现。我检查过

this->menuWidget();

不为空

如果我像这样修改代码

MyMenuBar *menu = new MyMenuBar();
connect(menu,SIGNAL(Close_Window()),this,SLOT(close()));
connect(menu,SIGNAL(Minimized_Window()),this,SLOT(hide()));
menu->setWindowFlags(Qt::FramelessWindowHint);
//this->setMenuWidget(menu);
menu->show();  

然后我的小部件显示正确,但它的行为像一个单独的窗口。

有人能帮我解决那个问题吗?谢谢。

@Ankur谢谢老兄。
它可以工作,但是当我设置父元素时,我不需要使用

this->setMenuWidget(menu)
所以,最后的代码看起来像:
MyMenuBar *menu = new MyMenuBar(this);
connect(menu,SIGNAL(Close_Window()),this,SLOT(close()));
connect(menu,SIGNAL(Minimized_Window()),this,SLOT(hide()));
menu->setWindowFlags(Qt::FramelessWindowHint);
menu->show();