标题:为什么重载QMessageBox的keyPressEvent()函数无效
作者:uniquezhu
日期:2006-10-19 10:54
内容:
我想扩展QMessageBox的keyPressEvent()函数,具体实现如下:
代码:
class MyQMessageBox;
class IconKeyboard : public QIconView
{
public:
IconKeyboard(QWidget *parent=0)
:QIconView(parent){}
void keyPressEvent(QKeyEvent * e);
void keyPressExtension(QKeyEvent *e);
private:
QIconViewItem *item;
MyQMessageBox *about;
int itemIndex;
int pid;
};
class MyQMessageBox : public QMessageBox
{
public:
MyQMessageBox ( QWidget * parent=0, const char * name=0 )
:QMessageBox( parent, name ){}
void keyPressEvent(QKeyEvent * e);
};
void IconKeyboard::keyPressEvent(QKeyEvent * e)
{
switch(e->key()){
case Key_F3 :
qApp->quit();
break;
case Key_F1:
item= currentItem();
itemIndex= index(item);
switch(itemIndex){
case 0:
pid=fork();
if (pid==0){
::execl("/home/qt-embedded/tetrix", "./tetrix", (char *)0);
::exit(-1);
}
break;
case 1:
pid=fork();
if (pid==0){
::execl("/home/qt-embedded/aclock", "./aclock", (char *)0);
::exit(-1);
}
break;
case 2:
pid=fork();
if (pid==0){
::execl("/home/qt-embedded/rm2yuv", "./rm2yuv", "halowars.rm", (char *)0);
::exit(-1);
}
break;
}
break;
..
#1 [shiroki 10-19 13:29]
我觉得messagebox的键盘事件应该是被box上的button获得了。 所以窗口本身的slot没有被调用到。