JS
.pragma library var scope = { } function call(msg) { var exp = msg.toString(); console.log(exp) var data = { expression : msg } try { var fun = new Function('return (' + exp + ');'); data.result = JSON.stringify(fun.call(scope), null, 2) console.log('scope: ' + JSON.stringify(scope, null, 2) + 'result: ' + result) } catch(e) { console.log(e.toString()) data.error = e.toString(); } return data; }
QML
import QtQuick 2.5 import QtQuick.Controls 1.5 import QtQuick.Layouts 1.2 import QtQuick.Window 2.2 import "jsconsole.js" as Util ApplicationWindow { id: root title: qsTr("JSConsole") width: 640 height: 480 menuBar: MenuBar { Menu { title: qsTr("File") MenuItem { text: qsTr("Exit") onTriggered: Qt.quit(); } } } ColumnLayout { anchors.fill: parent anchors.margins: 9 RowLayout { Layout.fillWidth: true TextField { id: input Layout.fillWidth: true focus: true onAccepted: { root.jsCall(input.text) } } Button { text: qsTr("Send") onClicked: { root.jsCall(input.text) } } } Item { Layout.fillWidth: true Layout.fillHeight: true Rectangle { anchors.fill: parent color: '#333' border.color: Qt.darker(color) opacity: 0.2 radius: 2 } ScrollView { id: scrollView anchors.fill: parent anchors.margins: 9 ListView { id: resultView model: ListModel { id: outputModel } delegate: ColumnLayout { width: ListView.view.width Label { Layout.fillWidth: true color: 'green' text: "> " + model.expression } Label { Layout.fillWidth: true color: 'blue' text: "" + model.result } Rectangle { height: 1 Layout.fillWidth: true color: '#333' opacity: 0.2 } } } } } } function jsCall(exp) { var data = Util.call(exp); outputModel.insert(0, data) } }
创作不易,小小的支持一下吧!
![]()
![]()