이 페이지에서

QDBusServiceWatcher Class

QDBusServiceWatcher 클래스를 사용하면 버스의 서비스 변경 사항을 감시할 수 있습니다. 더 보기...

헤더: #include <QDBusServiceWatcher>
CMake: find_package(Qt6 REQUIRED COMPONENTS DBus)
target_link_libraries(mytarget PRIVATE Qt6::DBus)
qmake: QT += dbus
상속: QObject

공개 유형

flags WatchMode
enum WatchModeFlag { WatchForRegistration, WatchForUnregistration, WatchForOwnerChange }

속성

공개 함수

QDBusServiceWatcher(QObject *parent = nullptr)
QDBusServiceWatcher(const QString &service, const QDBusConnection &connection, QDBusServiceWatcher::WatchMode watchMode = WatchForOwnerChange, QObject *parent = nullptr)
virtual ~QDBusServiceWatcher()
void addWatchedService(const QString &newService)
QBindable<QDBusServiceWatcher::WatchMode> bindableWatchMode()
QBindable<QStringList> bindableWatchedServices()
QDBusConnection connection() const
bool removeWatchedService(const QString &service)
void setConnection(const QDBusConnection &connection)
void setWatchMode(QDBusServiceWatcher::WatchMode mode)
void setWatchedServices(const QStringList &services)
QDBusServiceWatcher::WatchMode watchMode() const
QStringList watchedServices() const

신호

void serviceOwnerChanged(const QString &serviceName, const QString &oldOwner, const QString &newOwner)
void serviceRegistered(const QString &serviceName)
void serviceUnregistered(const QString &serviceName)

상세 설명

QDBusServiceWatcher 객체를 사용하면 버스에서 서비스 이름의 소유권 변경 사항을 애플리케이션에 알릴 수 있습니다. 이 객체에는 세 가지 감시 모드가 있습니다:

  • 서비스 등록만 감시합니다.
  • 서비스 등록 해제만 감시합니다.
  • 모든 종류의 서비스 소유권 변경을 감시합니다(기본 모드).

서비스는 생성되거나 삭제될 뿐만 아니라, 등록 해제/등록 작업이 발생하지 않더라도 소유자가 변경될 수 있습니다. 따라서 이러한 상황이 발생하더라도 ` serviceRegistered()` 및 ` serviceUnregistered()` 신호가 발송되지 않을 수 있습니다.

이 클래스는 QDBusConnectionInterface::serviceOwnerChanged() 신호를 사용하는 것보다 더 효율적입니다. 왜냐하면 이 클래스를 통해 사용자가 관심 있는 신호만 수신할 수 있기 때문입니다.

서비스 이름의 끝을 '*' 문자로 끝내면 지정된 네임스페이스 내의 모든 서비스 이름과 일치합니다.

예를 들어, "com.example.backend1*"은 다음과 일치합니다.

  • com.example.backend1
  • com.example.backend1.foo
  • com.example.backend1.foo.bar

동일한 도메인 내의 부분 문자열은 일치하지 않습니다(예: "com.example.backend12").

QDBusConnection도 참조하십시오 .

멤버 유형 문서

enum QDBusServiceWatcher::WatchModeFlag
flags QDBusServiceWatcher::WatchMode

QDBusServiceWatcher 이 플래그를 통해 설정되는 세 가지 시계 모드를 지원합니다:

Constant값설명
QDBusServiceWatcher::WatchForRegistration0x01서비스 등록만 감시하며, 다른 서비스 소유권 변경과 관련된 신호는 모두 무시합니다.
QDBusServiceWatcher::WatchForUnregistration0x02서비스 등록 해제 시에만 감시하며, 다른 서비스 소유권 변경과 관련된 신호는 모두 무시합니다.
QDBusServiceWatcher::WatchForOwnerChange0x03모든 종류의 서비스 소유권 변경을 감시합니다.

WatchMode 유형은 QFlags<WatchModeFlag>에 대한 typedef입니다. 이 유형은 WatchModeFlag 값들의 OR 조합을 저장합니다.

속성 설명

[bindable] watchMode : WatchMode

참고: 이 속성은 QProperty 바인딩을 지원합니다.

이 속성은 해당 QDBusServiceWatcher 객체의 현재 감시 모드를 저장합니다.

이 속성의 기본값은 QDBusServiceWatcher::WatchForOwnershipChange입니다.

액세스 함수:

QDBusServiceWatcher::WatchMode watchMode() const
void setWatchMode(QDBusServiceWatcher::WatchMode mode)

[bindable] watchedServices : QStringList

참고: 이 속성은 QProperty 바인딩을 지원합니다.

이 속성은 감시 대상 서비스 목록을 포함합니다.

참고: setServicesWatched()를 사용하여 이 목록을수정하는 것은 리소스 소모가 큰 작업입니다. 가능하다면 addWatchedService() 및 removeWatchedService()를 통해 변경하는 것을 권장합니다.

액세스 함수:

QStringList watchedServices() const
void setWatchedServices(const QStringList &services)

멤버 함수 문서

[explicit] QDBusServiceWatcher::QDBusServiceWatcher(QObject *parent = nullptr)

QDBusServiceWatcher 객체를 생성합니다. setConnection()를 통해 연결을 설정하기 전까지는 이 객체가 어떠한 신호도 발생시키지 않는다는 점에 유의하십시오.

parent 매개변수는 QObject 에 전달되어 이 객체의 부모를 설정합니다.

QDBusServiceWatcher::QDBusServiceWatcher(const QString &service, const QDBusConnection &connection, QDBusServiceWatcher::WatchMode watchMode = WatchForOwnerChange, QObject *parent = nullptr)

QDBusServiceWatcher 객체를 생성하여 connection 연결에 연결합니다. 또한, 이 함수는 service 서비스에 대한 watchMode 변경 사항을 즉시 감시하기 시작합니다.

parent 매개변수는 QObject 에 전달되어 이 객체의 부모를 설정합니다.

[virtual noexcept] QDBusServiceWatcher::~QDBusServiceWatcher()

QDBusServiceWatcher 객체를 삭제하고, 해당 객체와 관련된 모든 리소스를 해제합니다.

void QDBusServiceWatcher::addWatchedService(const QString &newService)

이 객체가 모니터링할 서비스 목록에 newService 을 추가합니다. 이 함수는 setWatchedServices()보다 효율적이므로, 서비스를 추가할 때는 가능한 한 이 함수를 사용해야 합니다.

watchedServices 에 대한 기존 바인딩을 모두 제거합니다.

QDBusConnection QDBusServiceWatcher::connection() const

이 객체가 연결된 QDBusConnection 를 반환합니다.

setConnection()도 참조하십시오 .

bool QDBusServiceWatcher::removeWatchedService(const QString &service)

이 객체가 감시 중인 서비스 목록에서 service 를 제거합니다. D-Bus 알림은 비동기적으로 처리되므로, service 에 대한 신호가 아직 전달 대기 중일 수 있습니다. 이러한 신호는 D-Bus 메시지가 처리될 때마다 여전히 발생합니다.

watchedServices 에 대한 기존의 바인딩을 모두 제거합니다.

이 함수는 서비스가 제거된 경우 true 를 반환합니다.

[signal] void QDBusServiceWatcher::serviceOwnerChanged(const QString &serviceName, const QString &oldOwner, const QString &newOwner)

이 객체가 serviceName 서비스와 관련된 소유권 변경을 감지할 때마다 이 신호가 발송됩니다. oldOwner 매개변수에는 이전 소유자 이름이 포함되어 있으며, newOwner 는 새로운 소유자입니다. oldOwner 와 newOwner 는 모두 고유한 연결 이름입니다.

이 신호는 serviceName 서비스가 등록되거나 등록 해제될 때마다 발생한다는 점에 유의하십시오. 서비스가 등록된 경우 oldOwner 에는 빈 문자열이 포함되며, 등록이 해제된 경우 newOwner 에는 빈 문자열이 포함됩니다.

소유권 변경 알림 없이 단순히 서비스가 등록되었는지 또는 등록이 해제되었는지 확인하기만 원하는 경우, 해당 작업에 특화된 모드를 사용하는 것을 고려해 보십시오. 보다 구체적인 모드를 사용할 경우 이 클래스의 효율성이 더 높아집니다.

serviceRegistered() 및 serviceUnregistered()도 참조하십시오 .

[signal] void QDBusServiceWatcher::serviceRegistered(const QString &serviceName)

이 객체가 버스에서 serviceName 서비스가 사용 가능해졌음을 감지할 때마다 이 신호가 발생합니다.

serviceUnregistered() 및 serviceOwnerChanged()도 참조하십시오 .

[signal] void QDBusServiceWatcher::serviceUnregistered(const QString &serviceName)

이 객체가 serviceName 서비스가 버스에서 등록 해제되어 더 이상 사용할 수 없게 된 것을 감지할 때마다 이 신호가 발생합니다.

serviceRegistered() 및 serviceOwnerChanged()도 참조하십시오 .

void QDBusServiceWatcher::setConnection(const QDBusConnection &connection)

이 객체가 연결된 D-Bus 연결을 connection 로 설정합니다. 감시 중인 모든 서비스가 이 연결로 이전됩니다.

QDBusConnection 객체는 참조 카운트가 적용된다는 점에 유의하십시오. 즉, ` QDBusServiceWatcher `은 이 연결이 존재하는 동안 해당 연결에 대한 참조를 유지합니다. 참조 카운트가 0이 될 때까지 연결은 닫히지 않으므로, 이를 통해 이 ` QDBusServiceWatcher ` 객체가 존재하는 동안 모든 알림을 수신할 수 있습니다.

connection()도 참조하십시오 .

void QDBusServiceWatcher::setWatchedServices(const QStringList &services)

감시 대상 D-Bus 서비스 목록을 services 로 설정합니다.

목록 전체를 설정하면 기존 서비스 감시 규칙이 모두 제거되고 새로운 규칙이 추가된다는 점에 유의하십시오. 이는 리소스 소모가 큰 작업이므로 가능하면 피해야 합니다. 대신, 가능하면 addWatchedService() 및 removeWatchedService()를 사용하여 목록 내 항목을 조작하십시오.

watchedServices 에 대한 기존 바인딩을 모두 제거합니다.

참고: watchedServices 속성에 대한세터 함수입니다.

watchedServices()도 참조하십시오 .

QStringList QDBusServiceWatcher::watchedServices() const

감시 중인 D-Bus 서비스 목록을 반환합니다.

참고: watchedServices 속성에 대한게터 함수입니다.

setWatchedServices()도 참조하십시오 .

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.