Пакет Visual Studio NuGet необходимо обновить для новой версии набора инструментов
У меня просто возникла проблема с подключением libpng с Visual Studio 2013. Проблема в том, что в файле пакета были только библиотеки для Visual Studio 2010 и 2012.
Правильное решение - надеяться, что разработчик выпустит обновленный пакет и затем обновит его, но он работал для меня, взломав дополнительную настройку для VS2013, указав на файлы библиотеки VS2012.
Я отредактировал пакет (в папке packages
внутри каталога решения), найдя packagename\build\native\packagename.targets
и внутри этого файла, скопировав все секции v110
. Я изменил v110
на v120
в полях условий только очень осторожно, чтобы пути с именами файлов были все как v110
. Это просто позволило Visual Studio 2013 подключиться к библиотекам на 2012 год, и в этом случае он работал.
Вам нужно установить свойство context перед , которое вы вызываете View.setSource
, иначе в тот момент, когда читается qml-файл, свойство ggg
действительно не определено.
Попробуйте следующее:
App = QGuiApplication(sys.argv)
View = QQuickView()
Context = View.rootContext()
GlobalConfig = Config('sc').getGlobalConfig()
print (GlobalConfig, type(GlobalConfig))
Context.setContextProperty('ggg', GlobalConfig)
View.setSource(QUrl('views/sc_side/Main.qml'))
View.setResizeMode(QQuickView.SizeRootObjectToView)
View.showFullScreen()
sys.exit(App.exec_())
Отказ от ответственности: не зная, что Config
, я не могу сказать, действительно ли это будет работать без каких-либо других модификаций.
Вы должны определить свойство контекста перед загрузкой файла QML, это лучше, потому что оно позволяет избежать предупреждений и перезагрузки контекста.
Если вы ДЕЙСТВИТЕЛЬНО вынуждены это делать, просто добавьте безопасность в свой QML-код :
color: (typeof (ggg) !== "undefined" ? ggg.Colors.notificationMouseOverColor : "transparent");
Затем, когда вы установите свойство контекста, он перезагрузит контекст (не рекомендуется), но по крайней мере ошибка не произойдет.