Pages
API Documentation
On this page

KDNSSD::ServiceModel Class

Model for list of Zeroconf services. More...

  • Header: #include <KDNSSD/ServiceModel>
  • CMake: find_package(KF6 REQUIRED COMPONENTS DNSSD)
    target_link_libraries(mytarget PRIVATE KF6::DNSSD)
  • Inherits: QAbstractItemModel

List of all members, including inherited members

Public Types

Public Functions

Detailed Description

This class provides a Qt Model for ServiceBrowser to allow easy integration of service discovery into a GUI. For example, to show the HTTP servers published on the local network, you can do:

KDNSSD::ServiceModel *serviceModel = new ServiceModel(
    new KDNSSD::ServiceBrowser("_http._tcp")
    );
QComboBox *serviceCombo = new QComboBox();
serviceCombo->setModel(serviceModel);

After the user makes a selection, the application typically needs to get a pointer to the selected service in order to get the host name and port. A RemoteService::Ptr can be obtained from a QModelIndex using:

void onSelected(const QModelIndex &selection) {
    KDNSSD::RemoteService::Ptr service =
        selection.data(KDNSSD::ServiceModel::ServicePtrRole)
                 .value<KDNSSD::RemoteService::Ptr>();
}

Member Type Documentation

enum ServiceModel::AdditionalRoles

The additional data roles provided by this model.

Constant Value Description
KDNSSD::ServiceModel::ServicePtrRole 0x7E6519DE Gets a RemoteService::Ptr for the service.

enum ServiceModel::ModelColumns

The default columns for this model.

If service browser is not set to resolve automatically, then the model will only ever have one column (the service name).

Constant Value Description
KDNSSD::ServiceModel::ServiceName 0 The name of this service.
KDNSSD::ServiceModel::Host 1 The hostname or IP address the service is hosted on.
KDNSSD::ServiceModel::Port 2 The TCP or UDP port the service is hosted on.

Member Function Documentation

[explicit] ServiceModel::ServiceModel(KDNSSD::ServiceBrowser *browser, QObject *parent = nullptr)

Creates a model for the given service browser and starts browsing for services.

Note: The model takes ownership of the browser, so there is no need to delete it afterwards.

Note: You should not call ServiceBrowser::startBrowse() on browser before passing it to ServiceModel.

[virtual] bool ServiceModel::hasIndex(int row, int column, const QModelIndex &parent) const

We use cookies to personalize content and to analyze our traffic. Please decide if you are willing to accept cookies from our website.