Skip to content

slint::DataTransfer Struct

struct DataTransfer;
C++
#include <slint.h>
C++

DataTransfer abstracts over the various ways of transferring data within an application and between applications. The details will depend on the current platform, but the common features are:

  • Each DataTransfer contains multiple views over the same data in different formats, specified by MIME type
  • The DataTransfer may contain an in-memory representation of the data, which can be sent and received within the current application
  • Serializing to a given format may be done eagerly or lazily
slint::DataTransfer::DataTransfer()

Default constructor for DataTransfer

explicit slint::DataTransfer::DataTransfer(const SharedString &string)

Constructs a DataTransfer whose plain text representation is string.

If string is empty, the resulting DataTransfer is empty (carries no plain text representation).

explicit slint::DataTransfer::DataTransfer(const Image &image)

Constructs a DataTransfer whose image representation is image. Conversion to the relevant format is done on-demand.

If image is default-constructed, the resulting DataTransfer is empty (carries no image representation).

slint::DataTransfer::~DataTransfer()

Destroys this DataTransfer, releasing any data it holds.

slint::DataTransfer::DataTransfer(const DataTransfer &other)

Creates a new DataTransfer that shares the data of other.

DataTransfer & slint::DataTransfer::operator=(const DataTransfer &other)

Assigns other to this DataTransfer and returns a reference to this.

slint::DataTransfer::DataTransfer(DataTransfer &&other) noexcept

Move-constructs a DataTransfer from other, leaving other in a default-constructed state.

DataTransfer & slint::DataTransfer::operator=(DataTransfer &&other) noexcept

Move-assigns other to this DataTransfer and returns a reference to this.

void slint::DataTransfer::set_plain_text(const SharedString &text)

Sets the plain text representation of this DataTransfer. Each DataTransfer can only have a single plain text representation; calling this again overwrites the previous one.

Passing an empty text clears the previously-set plain text instead of storing it.

void slint::DataTransfer::set_image(const Image &image)

Sets the image representation of this DataTransfer. Each DataTransfer can only have a single image representation; calling this again overwrites the previous one.

Passing a default-constructed Image clears the previously-set image instead of storing it.

bool slint::DataTransfer::has_plain_text() const

Returns true if this data transfer advertises a plain text representation.

bool slint::DataTransfer::has_image() const

Returns true if this data transfer advertises an image representation.

bool slint::DataTransfer::is_empty() const

Returns true if this DataTransfer carries no data: no plain text, no image, and no user data.

std::optional< SharedString > slint::DataTransfer::plain_text() const

Returns the plain text representation of this DataTransfer, or std::nullopt if no plain text representation is available.

std::optional< Image > slint::DataTransfer::image() const

Returns the image representation of this DataTransfer, or std::nullopt if no image representation is available.

void slint::DataTransfer::set_user_data(std::any value)

Overload of set_user_data() for callers that already hold a std::any.

std::any slint::DataTransfer::user_data() const

Returns the user data, or an empty std::any if none is set. Use std::any_cast to extract the concrete value.

bool slint::DataTransfer::has_user_data() const

Returns true if this DataTransfer holds user data.

void slint::DataTransfer::clear_user_data()

Clears the user data, if any.

bool operator==(const DataTransfer &a, const DataTransfer &b)

Compare two DataTransfer values for equality. This will return true if b is an unmodified clone of a, but if any modification has been done to either value since cloning then this will return false even if the two values are semantically identical.


© 2026 SixtyFPS GmbH