まず、Qt 4 ライブラリと C++ を使用しています。
プロパティ(動的またはその他)が変更されたときに通知(シグナル、イベント、?)する方法はありQObject
ますか?
QObject
Qt4 ライブラリの一部であるため、クラスを変更できません。詳細はQObject
こちら.
まず、Qt 4 ライブラリと C++ を使用しています。
プロパティ(動的またはその他)が変更されたときに通知(シグナル、イベント、?)する方法はありQObject
ますか?
QObject
Qt4 ライブラリの一部であるため、クラスを変更できません。詳細はQObject
こちら.
動的プロパティの場合、QDynamicPropertyChangeEventを使用できます。
それが役に立てば幸い !
QObject インスタンスにイベント フィルタをインストールできます。
したがって、windowsTitle の変更について通知を受けたい場合は、QEvent::WindowTitleChange イベントをキャプチャする eventfilter をインストールできます。
例えば:
class WindowsTitleWatcher : public QObject
{
Q_OBJECT
public:
WindowsTitleWatcher(QObject *parent) : QObject(parent) {
}
signals:
void titleChanged(const QString& title);
protected:
bool eventFilter(QObject *obj, QEvent *event){
if(event->type()==QEvent::WindowTitleChange) {
QWidget *const window = qobject_cast<QWidget *>(obj);
if(window)
emit titleChanged(window->windowTitle());
}
return QObject::eventFilter(obj, event);
}
};
//...
QDialog *const dialogToWatch = ...;
QObject *const whoWantToBeNotified = ...;
QObject *const titleWatcher = new WindowsTitleWatcher(dialogToWatch);
whoWantToBeNotified->connect(
titleWatcher,
SIGNAL(titleChanged(QString)),
SLOT(onTitleChanged(QString)));
dialogToWatch->installEventFilter(titleWatcher);
//...
私は「言語」に精通していませんが、一般的に、やりたいことはオブザーバーのデザインパターンに従います。このパターンでは、Observers を Observable Objects、つまり QObjects に登録します。Observable オブジェクト内で、そのオブザーバーのリストを追跡します。QObjects の状態の変化が発生したとき、オブザーバー リストを使用してすべてのオブザーバーに通知できます..本質的に、オブザーバーが実装できるインターフェイスを作成します...このインターフェイスは、観測可能なオブジェクトの異なる観測者。ちょっとした考え!