在QT应用程序中创建并执行函数

Create and execute a function in a Qt application?

本文关键字:执行 函数 创建 QT 应用程序      更新时间:2023-10-16

我正在尝试开发一种允许用户定义变量并使用条件迭代的表单。然后,该表格将将文本传递给应用程序,并将其翻译成并成为编码的一部分。这就像一个模板,允许用户编写相对复杂的功能。它不仅仅是计算器,因为它允许在结构内进行一些编程。我正在使用QT。

我想知道这是否可行。如果是这样,我应该使用哪种类型的形式和逻辑。

可以做到这一点,但是复杂性取决于您的目标。

对于qml,这将非常容易,因为它是一种解释的语言,不需要编译,因此您可以在文本字段中编写一些代码并执行。

对于C ,它并不容易,它是一种编译语言,您将不得不将编译器与应用程序捆绑在一起,将代码编译到共享库中,加载它,获取指向函数并运行它。

在这两种情况下,您都需要具有数据输入格式的定义接口,并链接到已经存在的程序对象。根据您的问题的措辞,您的技能可能还不到完成任务。

这是一个简单的示例,如何在qml中进行操作:

import QtQuick 2.7
import QtQuick.Window 2.2
import QtQuick.Controls 1.4
Window {
  id: main
  visible: true
  width: 500
  height: 300
  property int appData : 0
  Column {
    spacing: 5
    Text {
      text: "addData is " + appData
    }
    TextInput {
      id: code
      width: 500
      height: 200
      Rectangle {
        anchors.fill: parent
        border.color: "black"
        border.width: 1
        z: -1
      }
    }
    Button {
      text: "execute"
      onClicked: {
        var obj = Qt.createQmlObject('import QtQuick 2.0; QtObject { function foo(app) { ' + code.text + ' } }', main)
        if (obj) {
          obj.foo(main)
          obj.destroy()
        }
      }
    }
  }
}

然后,您可以尝试执行不同的语句,只要它们有效,例如:

app.appData = 5;
app.appData--;
console.log(app.appData);
app.width = 300;