- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我有一个 Qt 函数:
void MainWindow::button_clicked(Qstring a, Qstring b, Qstring c, Qstring d)
我从 QML 收集数据,我想将数据传递给 Qt 中的这个函数。所以我知道我需要使用 Q_INVOKABLE
但不知道如何使用它。
另外一件事是在调用上面的某个函数时可以调用其他函数。
例如:我调用了上面的函数,但在她的 body 里我调用了 refresh()
函数。这可能吗?
最佳答案
为了能够从 QML 调用方法,您必须使用 Q_INVOKABLE 或将其标记为插槽。如果 Q_INVOKABLE 不打算用作插槽,我更喜欢它,因为它更小。
class MainWindow : public QMainWindow {
Q_OBJECT
public:
...
Q_INVOKABLE void buttonClicked( const QString& a, const QString& b, const QString& c, const QString& d );
....
};
void MainWindow::buttonClicked( const QString& a, const QString& b, const QString& c, const QString& d ) {
...do stuff
update(); //example
}
buttonClicked() 的实现可以包含任何 C++ 代码。
要使主窗口实例可以从 QML 访问,您必须注册它,例如
QDeclarativeView* view = ...your view
view->rootContext()->setContextProperty( "_mainWindow", mainWindow );
注册后,你可以从 QML 调用 buttonClicked:
_mainWindow.buttonClicked("foo", "bar", "c", "d")
关于c++ - 使用 Q_INVOKABLE 将 C++ 与 QML 连接起来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9341005/
我有一个派生自的基类。该基类 (BaseClass) 是一个纯 c++ 类(不是从 QObject 派生的)并实现了方法,我想将这些方法原封不动地提供给我的 QML 接口(interface)。 假设
这是我的 C++ 函数 头文件: Q_INVOKABLE void setSelection(qint64 start, qint64 end, qint64 init); 主体文件: void Se
这是我的 C++ 函数 头文件: Q_INVOKABLE void setSelection(qint64 start, qint64 end, qint64 init); 主体文件: void Se
试图了解基于 Qt/QML 的应用程序的最佳实践,其中我们将方法标记为 Q_INVOKABLE。如果我们从其中一种方法中抛出异常,会有什么后果? class Class { ... Q
这个问题在这里已经有了答案: QObject Multiple Inheritance (3 个答案) 关闭 3 年前。 我有一个有趣的问题。我不知道如何组合从 QObject 继承的两个类。在基类
我在调用 Q_INVOKABLE 函数时遇到 QML 问题。尽管我将函数标记为 Q_INVOKABLE,但我遇到了错误 TypeError: Result of expression 'azdownl
我正在尝试简化(即摆脱大量样板代码)在必须标记为“INVOKABLE”的类中创建函数。 (非常像另一个问题 other question ) 从小处着手,我只是尝试使用一个函数: #define CO
我想从 QML 调用 C++ 方法,将参数传递给它。据我所知,我应该用宏 Q_OBJECT 标记类,用 Q_INVOKABLE 标记所需的公共(public)函数。 虽然我这样做了,但我仍然遇到运行时
我有一个 C++ 方法 Q_INVOKABLE。我可以从 QML 调用此方法,它在返回基本类型(如 QString)时有效。但我不能使用自定义类型。我应该怎么做?我应该返回一个 QVariant 吗?
众所周知,在 JavaScript 中,所有函数都可以接受任意数量的参数。 在 Qt 中,您可以使用 Q_INVOKABLE 标记 QObject,其方法可从 QML 访问。例如: class myO
我有一个非常简单的任务导致绕圈子,主要是因为 QML 和 QT 的 C++ 端的分离。因此,我不需要询问具体的 QT 问题,而是需要关于应该使用哪些 QT 和 QML 函数来实现我的用例的一般性建议。
我正在尝试测试 QQmlPropertyMap 类。如果我可以将它子类化,它似乎可以很好地满足我的需求。文档 here甚至给出了一些关于如何对其进行子类化的基本说明。所述文档还指出此类派生自 QObj
我有一个带有 Q_INVOKABLE 方法的 MasterController QObject,该方法返回对 MyType 对象的 const 引用,这是从 QObject 派生的另一种类型。我在 m
我有一个 Qt 函数: void MainWindow::button_clicked(Qstring a, Qstring b, Qstring c, Qstring d) 我从 QML 收集数据,
我刚刚意识到我几乎可以调用公开给 QML 的对象的任何函数。现在我对 Q_INVOKABLE 很好奇。 Qt5 docs状态: [...] any QML code can access the fo
我有简单的 c++ 类方法: Q_INVOKABLE const QString& getRiderTypeName(const int& riderTypeIndex) const; 及其实现: c
我是一名优秀的程序员,十分优秀!