qt开发问题之自定义文件后缀与指定程序关联解决方案(window/Linux)
创始人
2025-05-28 13:17:46
0

实际开发过程中时常遇到这种情况:双击自定义的后缀类型(例如:.ext),想要调用(Test.exe)打开,这个时候就需要设定文件类型的关联了。

1. window(两种方式)

1.1 写注册表关联

/*******************************************************************
* 注册文件关联
*       className    // 自定义的类别
*       appPath      // 关联的程序目录
*       ext          // 关联的文件类型
*       extDes       // 该文件类型描述
*******************************************************************/
void registerFileRelation(const QString& className, const QString& appPath, const QString& ext, const QString& extDes)
{QString baseUrl("HKEY_CURRENT_USER\\Software\\Classes");    // 要添加的顶层目录QSettings settingClasses(baseUrl,QSettings::NativeFormat);// 在...Classes\类别下创建一个新的类别,并设置该类别打开文件时的调用参数settingClasses.setValue("/" + className + "/Shell/Open/Command/.","\"" + appPath + "\" \"%1\"");// 文件类型描述settingClasses.setValue("/" + className + "/.",extDes);// 设置该类别的默认图标默认图标settingClasses.setValue("/" + className + "/DefaultIcon/.",appPath + ",0");// 关联ext 和 类别settingClasses.setValue("/" + ext + "/OpenWithProgIds/" + className,"");// 立即保存该修改settingClasses.sync();
}
调用:
QString className("LookExe");                           // 自定义的类别
QString appPath("E:\\Asdst\\00ssag\\winExe\\test.exe"); // 关联的程序目录
QString ext(".ets");                                    // 关联的文件类型
QString extDes("查看");                                  // 该文件类型描述registerFileRelation(className,appPath,ext,extDes);

1.2 使用assoc和ftype命令


相关命令行调用如下:

assoc .ets=etsfile

ftype etsfile="E:\\Asdst\\00ssag\\winExe\\test.exe" "%1"

 说明:在QT中使用Qprocess调用(systme调用会有黑框闪现)

    QString strAssoc = "assoc .eest=eestfile";                                                      // 显示或修改文件扩展名的关联QString strFtype = QString("ftype eestfile=\"%1\"").arg(QApplication::applicationFilePath());   // 显示或修改用在文件扩展名中的关联strFtype.replace("/", "\\");QProcess::startDetached("cmd.exe", QStringList() << "/c" << strAssoc + "\n");QProcess::startDetached("cmd.exe", QStringList() << "/c" << strFtype + "%1 \n");

2. Linux

....do something

 

相关内容

热门资讯

央企名录更新中国长安汽车集团入... 新京报贝壳财经讯(记者王琳琳)7月29日,国务院国资委网站中央企业名录更新,中国长安汽车集团有限公司...
A股午评:三大指数分化,沪指跌... 格隆汇7月29日|A股主要指数涨跌不一,截至午间收盘,沪指跌0.08%报3595.19点,深成指跌0...
2025年基金二季报划重点!泓... 来源:新浪基金 2025年第二季度泓德睿享一年持有期混合A基金净值增长率为3.09%,同期业绩比较基...
美团发文:绝不自营,浣熊食堂只... 来源:猎云网 7月29日,美团官方公众号发文称,经过半年多的试运营,7月初正式推出“浣熊食堂”品牌以...
独角兽疫苗企业三冲港股IPO:... 疫苗行业独角兽三冲港股IPO了! 在国产疫苗行业持续升级转型的浪潮中,一家坚持技术创新的企业正蓄势待...
A股站上新台阶,看好科技非银接... |2025年7月28日 星期一| NO.1中信建投:A股站上新台阶,看好科技非银接力 中信建投研报表...
中国长安汽车集团挂牌成立,朱华... 7月29日上午,中国长安汽车集团有限公司(以下简称“中国长安”)在重庆挂牌成立。这既是国内第三家汽车...
原创 扒... 懂车帝一场测试,成了智驾领域的“照妖镜”。测试结果触目惊心,无一车型全优通过!那些被吹上天的“遥遥领...
2025年LNG船拆解创纪录,... 2025年,LNG运输船拆解市场迎来爆发式增长,待拆解船成交量创下纪录——这凸显出在现货费率低迷的背...
中国押注电力无限的未来 文|小卢鱼 编辑|杨旭然 中国第99家央企中国雅江集团横空出世,序列号22,位于中国长江三峡集团有限...
多地消协发布上半年消费者投诉情... 7月以来,多地消协陆续发布了2025年上半年消费者投诉情况,从受理情况来看,消费欺诈、虚假宣传、预付...
7.28纯碱日评:纯碱市场交投... 纯碱市场分析 今日国内纯碱市场整体呈现稳中震荡走势,价格跌多涨少。截至目前,华北地区轻质纯碱价格在1...
国家税务总局:我国税收的调节分... 7月28日,国务院新闻办公室举行高质量完成“十四五”规划系列主题新闻发布会,介绍“十四五”时期税收改...
7.29黄金首现四连阴 交易有两个悲剧,一是万念俱灰,另一则是踌躇满志,美丽属于自信者,从容属于有备者,单边属于布局者,这本...
“吃药”行情再爆发,药ETF上... 7月29日早盘,A股“吃药”行情再爆发,制药、医疗联袂拉涨。 国内首只跟踪制药指数的药ETF(562...
上海谊众:7月28日融券卖出2... 证券之星消息,7月28日,上海谊众(688091)融资买入1424.3万元,融资偿还9642.78万...
凌晨重磅,又创新高! 【导读】标普500指数和纳斯达克指数双双创新高,英伟达市值突破4.3万亿美元 见习记者 储是 美东时...
贬值!人民币中间价单日调降48... 北京商报讯(记者 廖蒙)7月28日,中国人民银行授权中国外汇交易中心公布,当日银行间外汇市场人民币汇...
ETF盘中资讯|“吃药”行情再... 7月29日早盘,A股“吃药”行情再爆发,制药、医疗联袂拉涨。 国内首只跟踪制药指数的药ETF(562...
拓山重工连续5涨停后现&quo... 7月29日,拓山重工股价出现剧烈波动。该股以涨停价开盘,延续此前连续涨停态势。开盘后不久,股价突然出...