qt 文件关联

  • Post author:
  • Post category:其他


1、修改注册表的函数

void regedit_new(QString appPath,QString className,QString suffix,QString value)
{
    QString baseUrl("HKEY_CURRENT_USER\\Software\\Classes");    // 注册表的位置
    QSettings settings (baseUrl, QSettings::NativeFormat);
    settings.setValue("/" + className + "/.", value);       //新建类别
    settings.setValue("/" + className + "/Shell/Open/Command/.", "\"" + appPath + "\" \"%1\"");    //添加打开指令,传给main函数的参数
    settings.setValue("/" + className + "/DefaultIcon/.", appPath + ",0");        //该类型文件图标,这里设置与程序图标相同
    settings.setValue("/" + suffix+ "/OpenWithProgIds/" + className, "");    // 关联suffix 和 类别
    settings.sync(); 		//立即保存该修改
}

2、函数调用

int main(int argc, char *argv[]) {
   	AimyApplication a(argc, argv);
   	QDir::setCurrent(qApp->applicationDirPath());		//打开通过文件双击打开程序会导致程序默认相对路径改变为文件位置,可以通过这个设置回来
	Widget w;
	w.show();
	if(argc == 1) {		//设置条件不用每次都设置
		QString appPath = qApp->applicationFilePath();
		app_path = app_path.split("/").join("\\");	
		QString className("mkyfile");                           // 自定义的类别
		QString suffix(".mky");                                    // 关联的文件类型
		QString value("自定义文件类型");
		regedit_new(appPath,className,suffix,value);
	}
    return a.exec();
}



版权声明:本文为qq_43107223原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。