移植开源QT软件-SameGame
前言:
??????? QML是一種描述性的腳本語言,文件格式以.qml結尾。語法格式非常像CSS(參考后文具體例子),但又支持javascript形式的編程控制。我個人認為它結合了QtDesigner UI和QtScript的優點。QtDesigner可以設計出·ui界面文件,但是不支持和Qt原生C++代碼的交互。不過也沒關系,本身MVC分離了最好。
??????? QtScript可以和Qt原生代碼進行交互,但是有一個缺點,如果要在腳本中創建一個繼承于QObject的圖形對象非常不方便,只能在Qt代碼中創建圖形對象,然后從QtScript中進行訪問。而QML可以在腳本里創建圖形對象,并且支持各種圖形特效,以及狀態機等,同時又能跟Qt寫的C++代碼進行方便的交互,使用起來非常方便。
??????? 一般使用C++編寫計算密集型模塊,作為object插件的形式被QML使用,再使用JavaScript編寫邏輯模塊,做到模塊分離。
移植QtSameGame:
??????? QtSameGame在Qt5-Sample幫助頁。
??????? QtSameGame在Qt5-Sample里面不是單獨的工程創立的,不能原班移植。參考這篇文章:一步一步學Qt(Qt Quick)/qml 開發第五篇,建立一個基于Qt Quick Controls1.2 的工程。不能基于QML,不知道為何。
依照 參考文章里面的指示添加Content里面的文件,修改:
ApplicationWindow {//Rectangle {?????? 可以編譯運行。
?????? 但是失去了state屬性,又一次修改為
//ApplicationWindow {Rectangle {??????? 程序可以正常運行
可能性錯誤:During sturtup program exited with code 0xc0000139
?????? 解決方案:分清MinGW的DLL文件和Qt5里面的Dll文件;
?????????????????????????? 若使用了第三方庫,用所使用的QT版本重新編譯一次,如qwt這樣的第三方的庫;
注意:
??????? 將QML和其中的圖片放入資源中,這里引用QML的時候需要以qrc開頭,否則訪問不到圖片文件.
??????? 資源添加過程中在哪個位置加入是個問題.
爭議之處:
import "content/samegame.js" as Logic??????? 使用JS作為控制系統效率問題?邏輯與計算分離。
參考文章:
Rectangle???? 屬性列表頁
ApplicationWindow屬性頁
QML官方系列教程——Using the Qt Quick Particle System使用粒子系統
QML官方系列教程——Scalability 使用ApplicationWindow:適配不同分辨率設備。
Qt官方教程系列,此系列翻譯得較為詳細,非常值得參考: Qt官方教程系列Qt Quick新特性概覽:最明顯的就是新的QtQuick.Controls模塊的引入
此文章介紹了:在窗口部件中嵌入Qt Quick
??????? 最終我們為在一個現有的基于窗口部件的應用程序中包含一個Qt Quick 2場景添加了支持。這是通過使用新的QWidget::createWindowContainer()函數來嵌入一個QQuickWindow的。
QML范例詳解:使用JS編寫控制系統,使用C++進行計算。
Rectangle詳細解釋
總結
以上是生活随笔為你收集整理的移植开源QT软件-SameGame的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 人人通空间如何上课(人人都是产品经理)
- 下一篇: qqapp破解器的激活码是多少