2014-12-02 2 views
1

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

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

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

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

Какая ошибка? –

ответ

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 очистит все для вас.

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