QT中使用Motif的问题
QT中使用QFileDialog打开的目录文件很多的时候(如超过10,000)就会很慢,而且在UNIX上经常会Core dump.费了好多劲,也没有办法解决.于是我就想用Motif来编写一个对话框来解决这个问题.但我又遇到了新的问题,就是当把文件的名字得到后,我想关掉Motif做的对话框,却怎么都关不掉,如果不理这个关不掉的对话框的话,程序一切都正常.但总有个对话框在上面很别扭.我的程序如下,请高手指教: toplevel = XtVaOpenApplication(&app,"Motif dialog",NULL,0,&argc,argv,NULL,sessionShellWidgetClass,NULL); XtSetArg(args[0],XmNpathMode,XmPATH_MODE_RELATIVE); XtSetArg(args[1], XmNallowShellResize, TRUE); EndApp=0; dialog=XmCreateFileSelectionDialog(toplevel,"Files Open",args,2); XtAddCallback(dialog,XmNokCallback,echo_file,NULL); XtManageChild(dialog); XtAppMainLoop(app); void XtAppMainLoop(XtAppContext app_context){XEvent *event;while(EndApp==0) { XtAppNextEvent(app_context,event); XtDispatchEvent(event); if(XtIsManaged(dialog)==0) EndApp=1; }puts("End App!");}void echo_file(Widget widget,XtPointer client_data,XtPointer call_data){ char *fn; XmFileSelectionBoxCallbackStruct *cbs = (XmFileSelectionBoxCallbackStruct*)call_data; fn=(char*)XmStringUnparse(cbs->value, XmFONTLIST_DEFAULT_TAG, XmCHARSET_TEXT, XmCHARSET_TEXT, NULL,0,XmOUTPUT_ALL); if(!fn) { g_filename=QString(""); return; } if(!*fn) { g_filename=QString(""); puts("No file selected"); XtFree(fn); return; } g_filename=QString(fn); qWarning("Motif Select File name is %s",fn); XtFree(fn); XtUnmanageChild(dialog); XtDestroyWidget(dialog); XtDestroyWidget(toplevel);}