小编ess*_*eev的帖子

在QML中使用枚举分配或更改int属性

考虑这个简单的枚举类:

#include <QObject>
class BookTypes : public QObject
{
    Q_GADGET
    Q_ENUMS(AllBooksType)    

public:

    enum AllBooksType{
        eMagazine,
        eReference,
        eTextBook,
        eThesis
    };

signals:

public slots:

};
Run Code Online (Sandbox Code Playgroud)

输入注册 main()

qmlRegisterUncreatableType<BookTypes>("trial", 1, 0, "BookTypes", 
"Don't create qml instance for BookTypes");
Run Code Online (Sandbox Code Playgroud)

这是QML示例:

Rectangle {
        id: rect
        x: 100; y: 100
        width: 100
        height: 70
        color: "PowderBlue"
        border.color: "RoyalBlue"
        border.width: 1
        radius: 3

        MouseArea{
            x: 0; y: 0
            height: parent.height
            width: parent.width
            property int bt: BookTypes.eTextBook //perfect. now bt is 2
            onClicked: {
                console.debug("old book type:- ") …
Run Code Online (Sandbox Code Playgroud)

enums qt qml qtquick2

5
推荐指数
1
解决办法
648
查看次数

矢量 - 对统一初始化

我有一个集合定义为 -

using Parameters = std::vector<int>;
using Group = std::pair<std::string, Parameters>;
std::vector<Group> inputs;
Run Code Online (Sandbox Code Playgroud)

我的意图是使用像这样的陈述

inputs.push_back(group0 /*What goes in here ?*/);
inputs.push_back(group1 /*What goes in here ?*/);
Run Code Online (Sandbox Code Playgroud)

如何初始化group0group1使用初始化列表?像这样的代码似乎不起作用

inputs.push_back(std::make_pair("group0", {1, 2, 3, 4}));
Run Code Online (Sandbox Code Playgroud)

编辑:有矢量,对初始化已经存在的问题,但我看不出任何地方secondstd::pair又是一个集合.

c++ stdvector c++11 std-pair list-initialization

4
推荐指数
1
解决办法
409
查看次数

如何在QML中实例化C++组件 - WITH Parameterized Constructor

在假设的例子中,我有一个C++组件 -

class Board : public QObject
{
    Q_OBJECT
public:
    //Q_PROPERTYs go here
    explicit Board(int rows, int columns)
    {
        matrix = std::vector<int>(rows, std::vector<int>(columns, 0));
    }

    ~Board()
    {
        matrix.clear();
    }

    Q_INVOKABLE void checkAndUpdateAdjecentCells(int row, int column);
    //setters and getters here.

signals:
    void matrixUpdated();

private:
    Board(QObject *parent) = default; //i intend to do this.
    Board(Board& b) = delete;
    int nRows_, nCols_;
    std::vector<std::vector> matrix;
};
Run Code Online (Sandbox Code Playgroud)

注册于main()像-

qmlRegisterType<Board>("SameGameBackend", 1, 0, "BubbleBoard");
Run Code Online (Sandbox Code Playgroud)

如何在QML中实例化这样,以便调用参数化构造函数?

预期的QML代码 -

BubbleBoard{
    id: bboard
    rows: 10
    columns: 10 …
Run Code Online (Sandbox Code Playgroud)

c++ qml qt-quick

3
推荐指数
2
解决办法
2097
查看次数

标签 统计

c++ ×2

qml ×2

c++11 ×1

enums ×1

list-initialization ×1

qt ×1

qt-quick ×1

qtquick2 ×1

std-pair ×1

stdvector ×1