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.

void slint::DataTransfer::set_file_paths(R &&paths)

Sets the list of local file paths transferred by this DataTransfer, overwriting any previously set list. An empty list clears the file paths.

paths may be any range whose elements are convertible to std::filesystem::path, such as a std::vector<std::filesystem::path>.

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::has_file_paths() const

Returns true if this data transfer advertises a list of file paths.

bool slint::DataTransfer::is_empty() const

Returns true if this DataTransfer carries no data: no plain text, no image, no file paths, 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.

std::optional<std::vector<std::filesystem::path>> slint::DataTransfer::file_paths() const

Returns the list of local file paths transferred by this DataTransfer, or std::nullopt if no file paths are 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