Как передать QAction в слот Qt из QMenu

Я новичок в Qt, и у меня есть проблема, как передать QAction в качестве параметра, как этот код:

connect(fileToolBarAct, SIGNAL(toggled(bool)), this, SLOT(ToggleBar(fileToolBarAct));

И это моя функция слотов:

void MainWindow::ToggleBar(QAction& what)
{
    what.isCheckable();
}

2 ответа

Решение

QObject::connect не работает так Вы не можете передавать объекты SIGNAL а также SLOT макросы. SIGNAL а также SLOT макросы должны принимать сигнатуры функций. К тому же the signature of a signal must match the signature of the receiving slot как описано в Qt документация.

Я вижу, что вам не хватает понимания механизма сигналов и слотов, и я рекомендую вам прочитать документацию по Qt Signals and Slots для получения дополнительной информации. Чтение Qt Signals and Slots документация все прояснит для вас.

onnect(fileToolBarAct, SIGNAL(toggled(bool)), this, SLOT(ToggleBar(bool));


void MainWindow::ToggleBar(bool checked)
{
    QAction* action = qobject_cast<QOAction*>(sender());
    if (action) 
         action->setChecked(checked);
}
Другие вопросы по тегам