Important: Please read the Qt Code of Conduct -

MenuBar show Menu or Hide

  • Hello Users,

    i have a little problem with my menuBar. I will do a login function with loginButton. If there user an admin he see the completly menuBar. At first the menu is false (setVisible).


    If the user an admin:

    @if(status == "admin")

    When the User is an user:

    @else if(status == "user")
    QMessageBox::information(this,"Info","Bitte ein gramatikalisch, richtiges Password eingeben");@

    The problem is i can´t show the right menu. I have three task in the menu:

    1. File
    2. Edit
    3. Database

    an i will see file and edit and not database. I have continue follow syntax:

    @else if(status == "user")

    But the context is open at the left corner and not in the MainWindow.
    Have anybody a idea about it?

    Alex from Germany

  • Hello Alex, at the moment I try to understand what you try to do. In my opinion you are trying to make the menubar items available and the opposite in dependence of the current userlevel. Do you have a screenshot of your application?

  • Hallo,

    ja genau so meinte ich das. Ich habe ein Menü das je nach Usergroupe verschiedene Teile zu sehen sind.


    Hier ist das Bild. Ist leider nur 9 Tage online

  • Lifetime Qt Champion

    Hi guys,

    Please keep the thread in English, it's the official language to communicate on the forum (except for the regional sub-forums)

    As for your problem, it looks more like hiding a menu itself rather than the menu bar, or did I understand wrong ?

  • I will from the menuBar individual menue Heiden or shown.
    I will See file and hide settings and about also Show in the Bar. When the if is true i will See Database in the Menu and the admin menu

  • Oh I'm sorry! that was my mistake! I thought maybe it is easier for him to describe his problem in a familiar language but I forgot that other people could have the same problem whose are not familiar with the german language.

  • Lifetime Qt Champion

    There's always the "german forum": for that :)

  • Is the problem that you cannot hide the menuitems or is the problem that you have no idea how to handle the logic of hiding and showing the items in general?

  • I can hide the completly menu, but i will not hide all of this items.
    I have no idea with the Right Way :-(
    I try a lot of but nothing whas what i want.

    Sorry for my terrible english


  • Don't worry abour your english ;) Ok, I think the easiest way to realize it is

    @int iUserLevel = 0;

    enum UserLevel
        eUSER = 0,

    int checkUserlevel()
    if(iUserLevel == eADMIN)
    ui->menu_Datei ->setEnabled(true);
    ui->menu_Bearbeiten ->setEnabled(true);
    ui->menu_Datenbank ->setEnabled(true);

    else if(iUserLevel == eUSER)
        ui->menu_Datei      ->setEnabled(true);
        ui->menu_Bearbeiten ->setEnabled(true);
        ui->menu_Datenbank  ->setEnabled(false);

    return 0;

    Or is it a problem if the user can see the database item? I prefer to work with enumerations for the userlevel because it is better to handle than strings.

  • Hello,

    this idea:

    @ui->menu_Datei ->setEnabled(true);
    ui->menu_Bearbeiten ->setEnabled(true);
    ui->menu_Datenbank ->setEnabled(false);@

    is not bad. This idea is god and the User can´t clicked the menuItem, but in another program i will the user can´t see the database item.
    Okay. I must look what i do for this problem. But this is a start in the right way.

    Thanks for help :-)


  • Lifetime Qt Champion

    Then you can change setEnabled by setVisible for the items that should be invisible to the user

  • When i use this code:




    it doesn´t work correctly.
    I can use Datenbank item every time still with this code

  • Lifetime Qt Champion

    With the menu not visible ? How do you do that ?

  • When i use setVisible(true) i have the downMenu from Datenbank in the left corner :-D

  • Lifetime Qt Champion

    Can you show an image of what you get both with setVisible(true) and setVisible(false) ?

Log in to reply