Associate File Type with Qt In Mac Os and Win
Win Registry
Question
One day, my boss want me to finish one function which let the users can double click project file(*.opr) to startup application easy and quickly. oh, This function is very common, Just like double clicked the Microsoft Word Document(*doc,*docx), then, we can startup Micrsoft Word Application to edit frich text. Ok, let's do it.
- Win And Mac OS use the different way to associated file type.
- Now the App only process one project at same time. if use the double click to open opr file. how to do when opend one project now?
- Current App mode is single-one mode.
How
When we get the new task about program, First to think about it. What's i will finish? Did i do it before? How i should to do ? If you think nothing, There is better way to get the answer from internet for you.
I think nothing. But, I know it is associate windows registry in Windows OS and List.Info file In Mac OS. So, I want to know how to finished it use the C++ or Qt. I also searched some documents about how to read/write registry with Qt. I was feel better that time. But when i tried all ways what them said, they are both failed. I spend half of the day, but not working. Their blogs not have the good introduction.
Now, I get the right answer from blogs of cnblogs.com. cnblogs.com is bester web site bout the programe than others.
Done
I used Qt frame to finished it. if you know QSettings classes, it will be very easy, if not, please to see thw Qt help manual about the QSettings class at first.
/** some include file */
#ifdef Q_OS_WIN
#include <QSettings>
#endif
#ifdef Q_OS_WIN
void checkWinRegistry()
{
QString val;
QString exePath = qApp->applicationFilePath();
exePath.replace("/", "\\");
QSettings regType("HKEY_CURRENT_USER\\SOFTWARE\\Classes\\.abc",
QSettings::NativeFormat);
QSettings regIcon("HKEY_CURRENT_USER\\SOFTWARE\\Classes\\.abc\\DefaultIcon",
QSettings::NativeFormat);
QSettings regShell("HKEY_CURRENT_USER\\SOFTWARE\\Classes\\.abc\\Shell\\Open\\Command",
QSettings::NativeFormat);
/** . means default value, you can also use the "Default" string */
if("" != regType.value(".").toString()){
regType.setValue(".","");
}
/** 0 使用当前程序内置图标 */
val = exePath + ",0";
if(val != regIcon.value(".").toString()){
regIcon.setValue(".",val);
}
val = exePath + " \"%1\"";
if(val != regShell.value(".").toString()){
regShell.setValue(".",val);
}
}
#endif
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
checkWinRegistry();
/** if you want to get the file path, please use argv[1], if argc >= 2 */
QString text;
text = QString::number(argc);
text += "\n";
for(int i=0; i<argc; i++){
text += QString(argv[i]);///< This way to get the QString may be is unreadable code. eg, include chinese language, we should use `QStringList ltArguments = a.arguments();`
text += "\n";
}
Widget w(text);
w.show();
return a.exec();
}
Compared
if you don't clear about my way. Now, you could to see the following images about How to associate file type in QtCreater. we know that double *.pro file, we can startup QtCreater application to programing. How ?
- In Windows we can use
Ctrl+Rand inputregedit,Enterto open the windows registry editer. - Let we find
HKEY_CURRENT_USER\SOFTWARE\Classes\.pro, you can see what keys and values under this item;

- Then let we find
HKEY_CURRENT_USER\SOFTWARE\Classes\QtProject.QtCreator.pro, what keys and values under this item;

- There are other file type of qt.

Compared and to finished your work by try and try.
Associate Aile Aype An Aac As
personal Blogs
qt.io
stackoverflow
Qt Mac Release
stackoverflow
qt.io
Info.plist Mac
stackoverflow:overriding Mac app file associations via CFBundleDocumentTypes in info.plist
Reference
wikipedia Windows Registry
support windows registry
wikipedia Registry cleaner
知乎:为什么Win要有注册表,而Unix其他系统不需要
win注册表详解
c# cnblogs
vc cnblogs
Qt Win wiki.qt.io
Qt Mac stackoverflow
Qt Mac csdn
Mac And Win csdn
Associate File Type with Qt In Mac Os and Win的更多相关文章
- QT在Mac OS上编译运行初体验
QT是一个跨平台的框架,支持PC端(Windows.Linux和Mac OS)以及移动端(Android和IOS),之前的开发大都在Windows或者Ubuntu上,考虑到项目多平台支持性,本文对Ma ...
- Qt在Mac OS X下的编程环境搭建
尊重作者,支持原创,如需转载,请附上原地址:http://blog.csdn.net/libaineu2004/article/details/46234079 在Mac OS X下使用Qt开发,需要 ...
- Qt在Mac OS X下的编程环境搭建(配置Qt库和编译器,有图,很清楚)
尊重作者,支持原创,如需转载,请附上原地址:http://blog.csdn.net/libaineu2004/article/details/46234079 在Mac OS X下使用Qt开发,需要 ...
- vmware 安装 Mac OS X 10.9 Mavericks
This guide shows how to install fresh OS X 10.9 Mavericks on VMware workstation with Windows 7 or Wi ...
- Qt在windows与Mac OS中获取执行程序版本号
1 windows中获取执行文件exe的版本号 QString GetFileVertion(QString aFullName) { QString vRetVersion; string vF ...
- A MacFUSE-Based Process File System for Mac OS X
referer: http://osxbook.com/book/bonus/chapter11/procfs/ Processes as Files The process file system ...
- Mac OS X 10.10 Yosemite PHP 5.5.14 free type support fix
通过将php将至5.4来勉强支持freetype扩展,不推荐此方法 after upgrading to new Mac OS X Yosemite, i noticed that free type ...
- 在 Virtual Box 安装 Mac Os 并安装 Qt 开发应用
导读 由于 Beslyric-for-X 项目开发需要,开始尝试在 Mac Os 下开发 Qt 应用.尝试成功后,记录于此,希望对有类似需求的人有所帮助. 本文以开发 Beslyric-for-X 为 ...
- Mac OS安装octave出现的问题-'error:terminal type set to 'unknown'的解决'
学习Machine learning需要使用Octave语言,毕竟Andrew Ng (恩达.吴)力荐.本机系统Mac OS X EI Capitan, 其实什么系统都无所谓了,安装原理都是一样的. ...
随机推荐
- 使用Celery踩过的坑
为什么要使用celery Celery是一个使用Python开发的分布式任务调度模块,因此对于大量使用Python构建的系统,可以说是无缝衔接,使用起来很方便.Celery专注于实时处理任务,同时也支 ...
- 如何解决前后端token过期问题
问题描述: 首先后端生成的token是有时限的,在一段时间后不管前端用户是否进行了访问后端的操作,后端的token都会过期,在拦截器阶段就会返回错误的请求:token过期,从而拿不到想要的请求数据. ...
- Mac: iTerm2使用
From: http://www.cnblogs.com/noTice520/p/3190529.html 之前一直有朋友要我分享下在用的mac软件,今天有空就来写一下,可能不止于软件,会有一些配置或 ...
- phpstorm搜索匹配正则表达式
data-position=".................................................................." 点是匹配任意一 ...
- 安装CentOS 6.x出现Disk sda contains BIOS RAID metadata
今天在安装CentOS 6.6的时候,当进到检测硬盘步骤的时候,总是过不去,报错如下:Disk sda contains BIOS RAID metadata, but is not part of ...
- php如何获取服务器所在的时区
//获取默认时区echo date_default_timezone_get(); //将时区设置为中国date_default_timezone_set("PRC"); //将时 ...
- iPhone应用提交流程:如何将App程序发布到App Store
http://www.techolics.com/apple/20120401_197.html 对于刚加入iOS应用开发行列的开发者来说,终于经过艰苦的Coding后完成了第一个应用后最重要的历史时 ...
- (转)html中使用表单和input file上传图片
本文转载自:http://hi.baidu.com/love_1210/item/120e452b42b2a854c38d59eb 客户端代码: <form name="form1&q ...
- Bootstrap-Plugin:按钮(Button)插件
ylbtech-Bootstrap-Plugin:按钮(Button)插件 1.返回顶部 1. Bootstrap 按钮(Button)插件 按钮(Button)在 Bootstrap 按钮 一章中介 ...
- 【ZZ】各类程序开发语言概述 | 菜鸟教程
http://www.runoob.com/w3cnote/programming-intro.html 各类程序开发语言概述, 点击查看大图: