簡體   English   中英

將變量從C ++公開到QML

[英]Expose variable from c++ to qml

class Program
{
public:
    Program() = delete;
    Program(const QString &n, const QString &ip);
    Program(const Program &other) = delete;
    Program(Program &&other) = default;
    ~Program() = default;

    Program &operator=(const Program &other) = delete;
    Program &operator=(const Program &&other) = delete;

    constexpr static size_t maxProgram = 99;

private:
    QString name;
    QString imagePath;
};

嗨,我想將此類中的變量maxProgram公開給QML,我認為下面的代碼將其工作,但是我感謝其他干凈的解決方案。

enum def {
    foo = maxProgram
};
Q_ENUM(def)

使用Q_PROPERTY和CONSTANT屬性:

Q_PROPERTY(int maxProgram READ getMaxProgram CONSTANT)

...

private:
    int getMaxProgram() const {
        return maxProgram;
    }

size_t不起作用,但是從5.10開始,您可以使用qsizetype

Qt有一個很好的文檔,首先搜索它們,而不是發布問題。 總體描述頁面和具體答案

C ++

class ApplicationData : public QObject
{
   Q_OBJECT
 public:
   Q_INVOKABLE QDateTime getCurrentDateTime() const {
    return QDateTime::currentDateTime();
   }
};

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

  QQuickView view;

  ApplicationData data;
  view.rootContext()->setContextProperty("applicationData", &data);

  view.setSource(QUrl::fromLocalFile("MyItem.qml"));
  view.show();

  return app.exec();
}

QML

// MyItem.qml
import QtQuick 2.0

Text { text: applicationData.getCurrentDateTime() }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM