• 5531阅读
  • 2回复

SLOT是否能带参数 [复制链接]

上一主题 下一主题
离线henryhome
 
只看楼主 倒序阅读 楼主  发表于: 2006-06-08
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”能够实现程序的退出,不清楚菜单信号和槽之间连接是否能带形参,怎么连接呢
离线cocalele
只看该作者 1楼 发表于: 2006-06-09
SLOT应该这样写:
SLOT(blockdef(QKeyEvent *))
相应函数还是这样写:void Wt::blockdef(QKeyEvent *k)
离线fygenius

只看该作者 2楼 发表于: 2006-06-14
菜单表示俄可以设置快捷建么,用那个方法
快速回复
限100 字节
 
上一个 下一个