QT学习——QFileSystemModel与QTreeView显示文件夹下的文件信息

最近因为项目需求,使用QT做界面,新手学习,记录一些笔记。虽然QT已经做好了标准对话框的国际化,但是有时候对于中文的翻译可能达不到我们期望的,所以就需要我们自己来修改。比如下面的代码中,利用了国际化:

    // 写在main函数中
    QApplication app(argc, argv);

    QString translatorFileName("C:/Qt/4.8.6/translations/qt_zh_CN.qm");  
    QTranslator translator;  
    if (translator.load(translatorFileName))  
    {
        app.installTranslator(&translator);  
    }   

在显示treeview数据的函数中添加如下代码:

// 在treeview中显示桌面上的文件信息
    QFileSystemModel* model = new QFileSystemModel();
    model->setRootPath(QDesktopServices::storageLocation(QDesktopServices::DesktopLocation)); //文件夹路径可以根据需要更改
    ui.treeView->setModel(model);
    ui.treeView->setRootIndex(model->index(QDesktopServices::storageLocation(QDesktopServices::DesktopLocation)));
    ui.treeView->setSortingEnabled(true);

运行程序,结果如下:
这里写图片描述
从上图可以看出,最后一列的翻译就不理想,此时,我们如果想修改为理想的,则可以在显示treeview数据的函数中添加如下代码(去掉main函数中的QTranslator):

// 在treeview中显示桌面上的文件信息
    QFileSystemModel* model = new QFileSystemModel();
    model->setRootPath(QDesktopServices::storageLocation(QDesktopServices::DesktopLocation)); //文件夹路径可以根据需要更改
    ui.treeView->setModel(model);
    ui.treeView->setRootIndex(model->index(QDesktopServices::storageLocation(QDesktopServices::DesktopLocation)));
    ui.treeView->setSortingEnabled(true);

    // 将treeview 的头部设置为中文,此段代码必须在QFileSystemModel后执行,
    // 由此可以猜测,QFileSystemModel中可能也有header()->setModel()类似的动作
    QStringList headerList;
    QStringList headerList;
    string strColumn[] = {
        "名称",
        "大小",
        "类型",
        "修改日期",
    }; // 为了方便大家看,此处的字符串就出现在代码里了,
       // 一般情况下,字符串还是不要出现在代码中(不然不利于资源分离)

    for (int i = 0; i < sizeof(strColumn)/sizeof(strColumn[0]); ++i)
    {
        headerList.append(GBK::ToUnicode(strColumn[i])); //GBK是字符串转换类,可以自己封装
    }

    QStandardItemModel* itemModel = new QStandardItemModel();
    itemModel->setHorizontalHeaderLabels(headerList);
    ui.treeView->header()->setModel(itemModel); //修改header的方法有很多,我只是取了其中一种

运行程序,结果如下:
这里写图片描述
以上实现了需要的功能,性能方面,未做考究(在Windows平台上,用QT实现界面虽然强大,但是性能上还是比不上MFC的,两者各有千秋吧)。

  • 3
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值