右键菜单,对话框一闪就没了

2 篇文章 0 订阅

在mac中使用qt 4.7.1 + xcode开发的应用,由于提交到appstore的应用不能使用QFileDialog,因此只能作cococ代码来处理:

QString GetSelectFolderFun( const unsigned short *szPath, int len )
{
    QString strResult;

    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

    NSOpenPanel *panel = [NSOpenPanel openPanel];
    [panel setCanChooseFiles:NO];
    [panel setCanChooseDirectories:YES];
    [panel setAllowsMultipleSelection:NO];
    //[panel setDelegate:nil];
    NSString *path = [[NSString alloc] initWithBytes:szPath length:len*2 encoding:NSUTF16LittleEndianStringEncoding];
    [panel setDirectoryURL:[NSURL URLWithString: path]];
    if( NSFileHandlingPanelOKButton  == [panel runModal] )
    {
        NSArray *arrayFile = [panel URLs];

        for( unsigned int i = 0; i < [arrayFile count]; i++ )
        {
            strResult = [[[arrayFile objectAtIndex:i] path] UTF8String];

        }
    }

    [path release];
    [pool drain];

    return strResult;
}

但是这样在contextmenu中通过QAction来调用文件对话框时,对话框一闪就没了。

解决方法:在调用文件对话框之前先调用QCoreApplication::processEvents()。

    //appstore can't use QFileDialog, cocoa open filedialog will be setparent
    //contextMenu, the filedialog will be hide when contextmenu is hide
    QCoreApplication::processEvents();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值