特定のQStringの値が変更されるたびに、私のQtアプリケーションで変更が発生するようにしたいと思います。私はQString
のマニュアルの信号への参照を見つけることができませんでしたので、QString
をサブクラス化して、独自のシグナルを実装するか、または推奨される選択肢がありますか?Qtの観測可能なQString
0
A
答えて
3
それはあなたがQtの中のデータのクラスからの通知を取得する方法はありませんので、あなたは、信号への参照を発見していません。あなたがする必要があるのは、the property systemです。
文字列をコア論理オブジェクトのQ_PROPERTY
として実装するだけです。
// in some QObject derived class
Q_PROPERTY(QString text MEMBER m_text NOTIFY textChanged)
QString m_text;
signals:
void textChanged();
// that's all you need
latter is rather bigとして、QObject
を継承し、それぞれが、文字列の多くを持っているために大きなオーバーヘッドになります。ただし、オーバーヘッドがほとんどない単一のオブジェクトのプロパティとして多くの文字列を実装できます。
変更する文字列を監視するだけであれば、必要なのはプロパティだけです。 QString
のラッパーは、高度な機能、文字列の変更だけでなく、どのように変更されたのか、クリアされたのか、特定の文字が置き換えられたのか、切り捨てられたのか、別の文字列が挿入されたそして、どこ。データモデルのために得られるもの
+0
ありがとう、これは確かに行く方法に見えます。 –
1
簡単な解決策は、このようなものを使用して独自のクラスを定義するには、次のようになります。
class ObservableString : public QObject
{
Q_OBJECT
public:
void setValue(const QString &value) {
m_string = value;
emit valueChanged(value);
}
QString value() const {
return m_string;
}
signals:
void valueChanged(QString value);
private:
QString m_string;
};
関連する問題
- 1. 観測可能な配列内のノックアウト観測可能なオブジェクト
- 2. 観測可能なデータを観測可能な配列にプッシュノックアウト
- 3. KnockoutJS - 観測可能なオブジェクトの観測可能配列
- 4. 観測可能
- 5. RXJSで観測可能な内部観測オブザーバブルの受信可
- 6. ノックアウト観察可能な観測可能な配列の配列
- 7. 観測可能な角型
- 8. 観測可能なサポートレスキュープル
- 9. 観測可能なレイジーランダムジェネレータ
- 10. 観測可能なタイムアウト
- 11. RxJS:同じルートを使用していない観測可能な観測値観測可能な値
- 12. ノックアウト:観測可能
- 13. RxJava観測可能
- 14. は、別の観測可能なものに観測可能です。
- 15. 機能から観測可能なノックアウトアクセス
- 16. のCoffeeScript、ノックアウト&観測可能
- 17. 観測可能なサブスクリプションを別の観測可能なサブスクリプションにネストすることは可能ですか?
- 18. なぜ熱い観測可能なresubscribe
- 19. 観測可能なフォークジョインの問題
- 20. 角度2の観測可能な鎖
- 21. オブジェクトのプロパティで観測可能なAurelia
- 22. Rxjs観測可能なサブスクリプションの数
- 23. ホット観測可能なファーストエミッションのSwitchMap
- 24. observableオブジェクトバインディングの観測可能な配列
- 25. 観測可能な範囲へのマッピング
- 26. Angular2で観測可能なオブジェクトのアクセスフィールド
- 27. 角度2の観測可能なサブオブジェクト
- 28. 返さ観測可能
- 29. カスタムコルドバpushNotificationラッパー観測可能
- 30. LatestFromで観測可能
QStringはデータコンテナであるためシグナルを処理しませんが、QStringを継承してシグナルを実装するクラスを追加することが考えられます。 – eyllanesc
文字列を変更するどのクラスでもそれを処理できませんか? – drescherjm