Qt5:如何从 QMenuBar 中隐藏或删除 QMenu?
Qt5: How to hide or remove a QMenu from the QMenuBar?
我在 Windows7 平台上使用 Qt5:
Qt Creator 版本为:v3.3.2.
Qt 版本 5.5.1 和 MinGW 32 位。
目前,在我的菜单栏中有:
Configuration - Reports - Help
我搜索了 SO,我发现这是一个可能的答案:Not possible to hide a QMenu object QMenu::setVisible()?,但是它没有用...
所以,我尝试使用以下方法删除“帮助”菜单:
ui->menuHelp->setVisible(false);
和:
ui->menuHelp->menuAction()->setVisible(false);
不幸的是,两者都未能 hide/remove Help
菜单...
请问还有其他方法吗?
[代码]:
MainWindow::MainWindow(QWidget * parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
this->setWindowFlags(this->windowFlags() & ~Qt::WindowMaximizeButtonHint);
if(!server.listen(QHostAddress("192.168.1.2"), 8001))
return;
if(true) // just testing...
ui->menuHelp->menuAction()->setVisible(false);
}
为了测试,我在 menuBar
中添加了 3 个菜单。
然后我试了这个:
ui->menu3->menuAction()->setVisible(false);
它按预期工作 - 它隐藏了 menu3
。你的问题在别的地方。
代码 ui->menuHelp->setVisible(false);
隐藏了菜单,而不是 menuBar
上的操作。例如,当您单击 menuBar
上的操作时,菜单会变得可见。然后你可以用这行代码隐藏它。但是当你直接从构造函数调用它时,菜单仍然是不可见的,所以这段代码什么都不做。
我在 Windows7 平台上使用 Qt5:
Qt Creator 版本为:v3.3.2.
Qt 版本 5.5.1 和 MinGW 32 位。
目前,在我的菜单栏中有:
Configuration - Reports - Help
我搜索了 SO,我发现这是一个可能的答案:Not possible to hide a QMenu object QMenu::setVisible()?,但是它没有用...
所以,我尝试使用以下方法删除“帮助”菜单:
ui->menuHelp->setVisible(false);
和:
ui->menuHelp->menuAction()->setVisible(false);
不幸的是,两者都未能 hide/remove Help
菜单...
请问还有其他方法吗?
[代码]:
MainWindow::MainWindow(QWidget * parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
this->setWindowFlags(this->windowFlags() & ~Qt::WindowMaximizeButtonHint);
if(!server.listen(QHostAddress("192.168.1.2"), 8001))
return;
if(true) // just testing...
ui->menuHelp->menuAction()->setVisible(false);
}
为了测试,我在 menuBar
中添加了 3 个菜单。
然后我试了这个:
ui->menu3->menuAction()->setVisible(false);
它按预期工作 - 它隐藏了 menu3
。你的问题在别的地方。
代码 ui->menuHelp->setVisible(false);
隐藏了菜单,而不是 menuBar
上的操作。例如,当您单击 menuBar
上的操作时,菜单会变得可见。然后你可以用这行代码隐藏它。但是当你直接从构造函数调用它时,菜单仍然是不可见的,所以这段代码什么都不做。