●今天完成了QIconView类中对不同Item的选择,通过点击Item的图标可以实现对可执行文件的调用。需要在QIconView子类中重载void keyPressExtension(QKeyEvent *e)函数来实现。
用于识别不同Item来执行对应的程序的代码如下:
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);
}
在通过::execl("/home/qt-embedded/tetrix", "./tetrix", (char *)0)调用可执行文件之前必须先fork()一个子进程,否则在调用新的可执行文件之前会使屏幕闪烁,并且在新的可执行文件退出时使整个程序崩溃。
● 在给QIconViewItem的对象添加图标时,出现了函数不匹配的问题,原来是参数传递的形式不对,正确做法如下:
QIconViewItem *item;
QPixmap *pixmap;
item = new QIconViewItem( &qiconview, "Tetrix" );
item->setRenameEnabled( FALSE );
pixmap = new QPixmap("tetrix.png");
item->setPixmap(*pixmap); //特别要注意参数中的*一定要加