c++ - Qt5: ¿Cómo ocultar o eliminar un QMenu de QMenuBar?



show-hide menuitem (1)

Estoy usando Qt5 en la plataforma de Windows 7:
La versión de Qt Creator es: v3.3.2.
Qt versión 5.5.1 y MinGW 32bit.

Actualmente, en la barra de menú tengo:

Configuración - Informes - Ayuda

Busqué SO y encontré esto como una posible respuesta: No es posible ocultar un objeto QMenu QMenu :: setVisible ()? , pero no funcionó ...

Entonces, estaba intentando eliminar el menú de Ayuda usando:

ui->menuHelp->setVisible(false);

y:

ui->menuHelp->menuAction()->setVisible(false);

Desafortunadamente, ambos no pudieron ocultar / eliminar el menú Help ...

Por favor, ¿hay alguna otra forma de hacerlo?

[Código]:

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);
}

Solo para prueba, agregué 3 menús a menuBar .
Entonces probé esto:

ui->menu3->menuAction()->setVisible(false);

Y funcionó como se esperaba, oculta el menu3 . Tu problema está en otro lado.

El código ui->menuHelp->setVisible(false); oculta el menú, no la acción en el menú menuBar . Por ejemplo, al hacer clic en la acción en el menú menuBar el menú se vuelve visible. Entonces puedes esconderlo con esta línea de código. Pero cuando llamas esto directamente desde el constructor, el menú sigue siendo invisible, por lo que este código no hace nada.





menuitem