FLTK Fl_File_Chooser的使用

默认的Fl_File_Chooser的界面是这样的。

可以构造函数参数可以选择单个文件、多个文件、文件夹以及创建新文件。

如何获取选择的(多个)文件,需要写Fl_File_Chooser的回调函数。

//下标是从1开始的,使用0开始的下标也不报错,看到官方文档的实例代码才找到原因
void FileChooser_cb(Fl_File_Chooser* fc, void* data)
{for (int i = 1; i <= fc->count(); i++){const char* currentFilename = fc->value(i);cout << currentFilename << endl;}
}
****构造函数****
第一个参数是默认路径,第二个参数是过滤器filter 可以用 | 增加其他文件拓展名,,第三个参数  选择单个文件SINGLE,多个文件MULTI,创建CREATE,文件夹(存在,一个)DIRECTORY
//main函数
int main(int argc, char* argv[])
{Fl_File_Chooser fc(".", "TIF (*.tif)", Fl_File_Chooser::MULTI,"File Chooser");fc.callback(FileChooser_cb);fc.show();return Fl::run();
}

如何得到选择的文件名困扰了我许久,仔细研究实例代码终于发现端倪。
Chooser不能直接返回选中的文件名,这里指点击确定按钮后。如果使用上面的回调函数,寻找文件过程中点到的其他文件夹或者误点的其他文件,文件名都被会被 value 函数返回,这样就没办法判断自己选中的文件名了。
得到最终选定的文件名,需要配合 visible 函数使用。

void show_callback(void)
{int    i;          // Looping varint   count;          // Number of files selectedchar relative[FL_PATH_MAX];  // Relative filenameif (filter->value()[0])fc->filter(filter->value());fc->show();//精髓就在这里while (fc->visible()) {Fl::wait();}count = fc->count();if (count > 0){files->clear();for (i = 1; i <= count; i ++){if (!fc->value(i))break;fl_filename_relative(relative, sizeof(relative), fc->value(i));files->add(relative,Fl_File_Icon::find(fc->value(i), Fl_File_Icon::PLAIN));}files->redraw();}
}

上面是demo的源码,等到Chooser隐藏起来,再来获取选中的文件名。

FLTK Fl_File_Chooser的使用相关推荐

  1. 2001年的FLTK设置教程

    FLTK 1.3已经编译完成,ide目录下有VC的编译文件,编译前增加FL目录为include目录即可. 编译时出错,提示offset重复定义,这是因为vc6的C++不标准引起的,定义int i后把o ...

  2. 在redhat9中交叉编译nano-X nxlib和fltk

    来自:http://tauruspdj.blog.163.com/blog/static/4312500620080279183197/ 1)编译nano-X(即microwindows-0.91) ...

  3. 使用CLion配置第一个FLTK界面

    文章目录 写在前面 安装与配置 安装 helloworld 配置命令行 配置CLion 运行结果 写在前面 假期抽时间学习一下跨平台GUI界面的开发, 正好也当做C++的练手小项目了. C++标准库中 ...

  4. fltk在UbuntuLinux中搭建和测试-《C++程序设计原理与实践》Chapter12:显示模型 环境构建...

    ====================Step1==================== 在Windows下参看 http://www.cnblogs.com/vincentfon/archive/ ...

  5. FLTK的UI设计工具FLUID使用方法总结

    tags: FLTK C++ GUI 写在前面 终于又捡起来FLTK了, 先来看看怎么通过FLUID创建一个图形界面并完成回调函数的创建, 参考的是官方教程中关于创建一个CubeView程序的例子, ...

  6. 在FLTK中使用OpenGL的正确姿势(MacOS)

    tags: FLTK C++ Tips 写在前面 最近想捡起来之前曾经浅尝辄止的一个C++图形库FLTK, 一些简单的项目做起来还是很趁手的, 但是到了OpenGL这里就显得有点复杂了, 由于对cma ...

  7. FLTK 重写Fl_Button回调

    众所周知,FLTK的回调只能有一个,其他的需要重写handle(),所以我打算直接重写handle(),制作多个回调 #include <FL/Fl.H> #include <FL/ ...

  8. VS2017下安装fltk库——C++程序设计原理与实践图形编程指南

    VS2017下安装fltk库--C++程序设计原理与实践图形编程指南 前言 最近,我在学习<C++程序设计原理与实践>(原书第一版)遇到了安装图形库的问题,我花了两天时间,通过各种途径查找 ...

  9. 浅谈如何fltk项目编译和实现显示中文

    目录 一.编译 二.中文显示如何处理: 2.1在发文2天前突然发现,我这个界面显示英文出现问题了,开始我的搜索之旅,一些参考页面有碰到问题也可以看看: 2.2. 那就开始翻翻官方自带的例程吧,看看他如 ...

  10. fltk教程01-基础

    ==========20090511更新====================== #include <fltk/Window.h>#include <fltk/Widget.h& ...

最新文章

  1. 关于Java性能监控您不知道的5件事
  2. loginButton.setOnClickListener(this);这里为什么要用this呢?
  3. MySQL MyISAM和InnoDB存储引擎的比较
  4. flink整合java,Flink使用SideOutPut替换Split实现分流
  5. Cookie 、Session、Token理解以及常见问题总结
  6. 从文档流角度理解浏览器页面渲染引擎对元素定位的解析
  7. 景驰科技与联通实现全国首个5G网络下L4级无人驾驶应用
  8. arcgis数据量大显示慢_优化MapGIS地图显示速度我的七个方法
  9. JS调用asp.net后台方法:PageMethods
  10. 电脑模拟收银机_模拟超市收银系统
  11. dnf服务器不维修,dnf无法修理装备
  12. 【用Java模拟KTV点歌系统】
  13. win10安装oracle18c,Win10 Oracle 18c 完全卸载
  14. C++学习笔记(C转)
  15. 保研导师联系邮件模板
  16. 南京热门美食网html,江苏南京十大特色美食排名榜单揭晓
  17. 孪生网络图像相似度_论文浅尝 | 使用孪生BERT网络生成句子的嵌入表示
  18. CnOpenData中国高校专利授权数量统计
  19. 2012第三届国信蓝点杯全国软件设计大赛编程大题
  20. 力荐一些学习方面的公众号

热门文章

  1. oracle注射,中国联通沃支付一处Oracle数据库注射
  2. 地市级地铁数据管理信息系统解决方案
  3. java 生成pdf 分页_java itext导出PDF 分页 github
  4. Android随笔-include、merge、ViewStub
  5. 用Python学《微积分B》(序)
  6. 用python完成《商务与经济统计(第13版)》课后练习——第7章和第8章
  7. 【python数据分析】亚太地区的商学院(商务与经济统计案例3-3)数据分析
  8. AE 动效工作流技巧 —— 减少 Bodymovin 导出的 JSON 大小并提升性能(三)
  9. 2019年中国研究生数学建模大赛的经验分享
  10. 海康威视球形摄像头激活,web二次开发