1)不能编译通过的情况
operMenu=new QPopupMenu(this); //定义了一个oper(操作)菜单
menuBar->insertItem(tr("oper"),operMenu);
operMenu->insertItem(tr("blockdef"),this,SLOT(blockdef(QKeyEvent *k))); //操作菜单下有个blockdef选项
并且想连接到槽blockdef()
void Wt::blockdef(QKeyEvent *k) //blockdef函数中想先做个小测试,就是按下q时程序能够退出
{
switch (k->ascii()){
case 'q': // program to quit
QApplication::exit();
break;
}
}
2)能编译通过但按下“q”时却起不到作用的情况
operMenu=new QPopupMenu(this);
menuBar->insertItem(tr("oper"),operMenu);
operMenu->insertItem(tr("blockdef"),this,SLOT(blockdef())); //去掉了SLOT的形参
void Wt::blockdef()
{
QKeyEvent *k; //我也知道将键盘事件定义在程序中,按下按键的时候肯定起不到作用,可是不这样定义,又能怎么办呢?
switch (k->ascii()){
case 'q': // program to quit
QApplication::exit();
break;
}
}
就是想点击 blockdef选项后,再点击“q”能够实现程序的退出,不清楚菜单信号和槽之间连接是否能带形参,怎么连接呢