标题:SLOT是否能带参数
作者:henryhome
日期:2006-06-08 14:42
内容:
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”能够实现程序的退出,不清楚菜单信号和槽之间连接是否能带形参,怎么连接呢
#1 [cocalele 06-09 15:46]
SLOT应该这样写:
SLOT(blockdef(QKeyEvent *))
相应函数还是这样写:void Wt::blockdef(QKeyEvent *k)
#2 [fygenius 06-14 13:04]
菜单表示俄可以设置快捷建么,用那个方法