@mcchuは彼のポストで指摘したように、index
と呼ばれる機能がありますdata
をQSortFilterProxyModel
に設定します。私はQMLの私QSortFilterProxyModel
上で、これらの関数を呼び出すようにしようとした場合残念ながら、私は次のエラーを取得する:
したがって
TypeError: Property 'index' of object QSortFilterProxyModel(0x7fcff0c2af90) is not a function
thisポストが提案されているよう。別のC++クラスを作成しました。私のQSortFilterProxyModel
のconstポインタを受け取って、index
とdata
関数をラップし、目的の値を返します。このクラスはQMLコードから呼び出すことができるように登録されています。ここで
はコードです:
class SomeClass : public QObject {
Q_OBJECT
public:
SomeClass(const QSortFilterProxyModel* sortedModel) {
m_sortedModel = sortedModel;
}
Q_INVOKABLE QVariant getValue() {
QVariant someTypeRole = m_sortedModel->data(m_sortedModel->index(0, 0), SomeModelClass::SomeRoles::SomeTypeRole);
if (someTypeRole.isValid()) {
return type = someTypeRole.toString(); // I know it is a QString for sure, but there are mechanisms to find out the type of the role
}
return QVariant();
}
private:
const QSortFilterProxyModel* m_sortedModel;
};
EDIT:@Mitchはなく、唯一のQt 5.5から、彼のコメントの@ mcchuのソリューションの作品の中で指摘したよう
。
ありがとうございます!私はあなたが上記で説明したものと同じロジックを考えていましたが、TypeError:オブジェクトQSortFilterProxyModel(0x7fcff0c2af90)のプロパティ 'index'が関数ではありません。私は 'QSortFilterProxyModel'のconstポインタを受け取って基本的に同じことをするC++クラスを作成します。それで私はそれを登録して、QMLから呼び出すことができます。私は数分で私のソリューションを投稿します。 – Silex
@Silexでは、残念ながらそれを反映する変更ログエントリもドキュメントもなかったので、誰もあなたがそれを知っているとは思っていませんでしたが、関数はQt 5.5でのみ呼び出せました。 – Mitch
それは本当に便利な情報です@ミッチ、ありがとう! – Silex