• 6748阅读
  • 8回复

[讨论]问一个比较高级点的问题。 [复制链接]

上一主题 下一主题
离线xiumingjun
 

只看楼主 倒序阅读 楼主  发表于: 2011-11-04
我自己写了一个小程序,在该程序的菜单中有“打开文件”菜单,当然打开的文件类型是 .pro类型,或者是二进制文件 (随便举个例子,如 .las)。和预期的一样:先弹出对话框选择文件,然后打开,读取……。
但是我想在系统中找到要打开的文件(例如 aaaa.pro 或者 bbbb.las),双击它就能直接调用我的程序来打开,并读取。或者是鼠标右键单击想要打开的文件,然后选择自己写的小程序来打开它。 就像你双击cccc.doc,Word程序就会启动打开它。
如何实现呢?
大家讨论一下该如何实现?应该采取什么机制?

离线roywillow

只看该作者 1楼 发表于: 2011-11-04
只能说需要参考系统api
另外程序应该需要接受argument
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线dbzhang800

只看该作者 2楼 发表于: 2011-11-04
这种东西和Qt没有任何关系,属于Shell编程的范畴,

具体到Windows下,就是explorer.exe这个东西,你可以通过给它写ActiveX控件来实现(而像你描述的这种简单的东西,也可以直接修改注册表来实现,甚至是选择打开方式,让系统记住上一次的)

在linux下,根据你所用的文件管理器不同,采用不同的方式进行扩展
离线zhy282289
只看该作者 3楼 发表于: 2011-11-04
QFileDialog不是能双击打开获得文件路径?然后用QProcess打开你的程序并传路径过去处理你的文件?
难道是我理解错?
"就像你双击cccc.doc,Word程序就会启动打开它。"你别告诉我你是在电脑里(不是你程序里)双击然后打开你的程序处理啊?
为什么我脸这么胖~
离线xiumingjun

只看该作者 4楼 发表于: 2011-11-04
回 3楼(zhy282289) 的帖子
你说的这个我能够理解,但是我要打开的就是在电脑里,而不是用程序直接去打开
离线xiumingjun

只看该作者 5楼 发表于: 2011-11-04
回 2楼(dbzhang800) 的帖子

呵呵,不是太明白啊。
离线jorneyr

只看该作者 6楼 发表于: 2011-11-04
打开桌面上的1.mp4视频文件
QDesktopServices::openUrl(QUrl("file:////Users/Biao/Desktop/1.mp4"));

The openUrl() function is used to open files located at arbitrary URLs in external applications. For URLs that correspond to resources on the local filing system (where the URL scheme is "file"), a suitable application will be used to open the file; otherwise, a web browser will be used to fetch and display the file.
离线jdwx

只看该作者 7楼 发表于: 2011-11-04
那个功能是:自动文件关联
据我知道的Qt里没有,Qt的类太多了,到底有没有呢?
MFC倒是有这个功能,默认生成的框架就有。
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线dbzhang800

只看该作者 8楼 发表于: 2011-11-04
引用第7楼jdwx于2011-11-04 14:21发表的  :
那个功能是:自动文件关联
据我知道的Qt里没有,Qt的类太多了,到底有没有呢?
MFC倒是有这个功能,默认生成的框架就有。


这是应该安装程序做的工作,应用程序一般应该不会自己去做吧?

Windows下创建关联还是比较简单的:

比如我有一堆自定义的文件 .axb .axv .avf .avd ...
每个类别有不同的图标(分别使用 opeeeditor.exe 资源中的图标 1、2、3、4...)
所有均关联到一个 opeeeditor.exe 的程序

我的nsis脚本大致如下:

Section "Register FileType" Section1
  ;Register FileType
  WriteRegStr HKCR ".axb" "" "OpeeAxialB.Document"
  WriteRegStr HKCR ".axv" "" "OpeeAxialV.Document"

  WriteRegStr HKCR "OpeeAxialB.Document" ""  "OpeeAxialFile Document"
  WriteRegStr HKCR "OpeeAxialB.Document\DefaultIcon" "" "$INSTDIR\opeeeditor.exe,1"
  WriteRegStr HKCR "OpeeAxialV.Document" ""  "OpeeAxialFile Document"
  WriteRegStr HKCR "OpeeAxialV.Document\DefaultIcon" "" "$INSTDIR\opeeeditor.exe,2"
  
  WriteRegStr HKCR "OpeeAxialB.Document\shell\open\command" "" '"$INSTDIR\opeeeditor.exe" "%1"'
  WriteRegStr HKCR "OpeeAxialV.Document\shell\open\command" "" '"$INSTDIR\opeeeditor.exe" "%1"'
SectionEnd
快速回复
限100 字节
 
上一个 下一个