gpt4 book ai didi

qt - 如何将 Qt 快速按钮单击连接到 C++ 方法

转载 作者:行者123 更新时间:2023-12-04 21:16:47 25 4
gpt4 key购买 nike

我刚刚开始使用 Qt Quick 2.0 学习 Qt Mobile 编程,我整天都在 google 上,这让我发疯了,所以就这样吧。
我只有 qt 为您制作的标准 qt 快速移动应用程序。这是所有文件。

(我是新手,所以这些可能是菜鸟,抱歉)
好的,这是我不知道的 list :

  • 我到底如何将此类方法连接到 qml 文件中的按钮单击。
  • 是否可以连接相同的点击并将参数通过从 qml 的点击传递到方法,如果是这样,我该怎么做?
  • 我还想知道是否可以像常规 QWidget 类一样将类快速链接到 qt:
    int main(int argc, char *argv[])
    {
    QGuiApplication app(argc, argv);
    SomeClass *sc = new SomeClass();

    QtQuick2ApplicationViewer viewer;

    // this I guess would be more like the Widget method but this i really dont know
    // about, just a question I'm throwing out there
    viewer. (Link qt quick qml to object "sc"(Containing all my processes))

    viewer.setMainQmlFile(QStringLiteral("qml/Final2/main.qml"));
    viewer.showExpanded();

    return app.exec();
    }

  • 主(.)cpp 文件
    #include <QtGui/QGuiApplication>
    #include "qtquick2applicationviewer.h"

    int main(int argc, char *argv[])
    {
    QGuiApplication app(argc, argv);

    QtQuick2ApplicationViewer viewer;
    viewer.setMainQmlFile(QStringLiteral("qml/Final2/main.qml"));
    viewer.showExpanded();

    return app.exec();
    }

    这只是我的 main.qml 中的按钮元素
    Button {
    id: btn
    y: 443
    height: 39
    text: "Click Me"
    anchors.bottom: parent.bottom
    anchors.bottomMargin: 8
    anchors.right: parent.right
    anchors.rightMargin: 25
    anchors.left: parent.left
    anchors.leftMargin: 15
    }

    这只是一些随机的类标题:
    #ifndef SOMECLASS_H
    #define SOMECLASS_H

    #include <QObject>
    #include <QDebug>>

    class SomeClass : public QObject
    {
    Q_OBJECT
    public:
    explicit SomeClass(QObject *parent = 0);

    signals:

    public slots:
    void buttonClicked();
    void buttonClicked(QString &in);
    };

    #endif // SOMECLASS_H

    当然是cpp文件:
    #include "someclass.h"

    SomeClass::SomeClass(QObject *parent) :
    QObject(parent)
    {
    }

    void SomeClass::buttonClicked()
    {
    // do something
    }

    void SomeClass::buttonClicked(QString &in)
    {
    qDebug() << "Your string was : " << in;
    }

    我真的很感谢所有的帮助。
    谢谢你。

    最佳答案

    首先,您需要将 SomeClass 对象导出到 QtQuick(这是您的第三个问题吗?):

    SomeClass sc;
    viewer.rootContext()->setContextProperty(QStringLiteral("_someObject"), &sc);

    这使得 sc 对象在 QtQuick 中可用,名称为“_someObject”。

    然后,在 QML 中像这样使用它:
    Button {
    ....
    onClicked: {
    _someObject.buttonClicked(); //_someObject is the name used in setContextProperty.
    }
    }

    这假设 Button 有一个 clicked() 信号,该信号在点击/触摸时发出。不知道您使用哪个 Button 组件,我无法检查。

    要传递参数,只需执行
    onClicked: {
    _someObject.buttonClicked("Something");
    }

    关于qt - 如何将 Qt 快速按钮单击连接到 C++ 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21437841/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com