Как создать пункт меню переключения в Qt 5.6

Мне нужно иметь элемент «Показать/скрыть» в меню Qt, чтобы, когда пользователь нажимал Hide, определенный виджет скрывался, а пункт меню менялся на Show, и аналогичным образом, если пользователь нажимал Show, виджет отображался, а пункт меню менялся. до Hide. Как этого можно добиться в Qt 5.6?


person Amani    schedule 30.05.2016    source источник


Ответы (1)


Вы можете добавить к своему QMenu некоторые QAction с функцией setCheckable(true). После этого вы можете использовать метод SIGNAL/SLOT, чтобы делать то, что хотите, например:

Файл .H:

    <...>
    QAction *_togAct;
    <...>
public slots:
    void change(bool set);

Файл .CPP:

void YourClass::change(bool set)
{
    if(set) {
        _togAct->setText("Show");
        <...>
    }
    else {
        _togAct->setText("Hide");
        <...>
    }
}

Где-то в классе:

_togAct = new QAction(tr("Hide"), this);
_togAct->setCheckable(true);
connect(_togAct, &QAction::toggled, this, &YourClass::change);
men->addAction(_togAct);
person someoneinthebox    schedule 30.05.2016