Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
clipwindow.cpp
Go to the documentation of this file.
1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
3
4#include <QtWidgets>
5#include <QGuiApplication>
6#include <QMimeData>
7#include <QClipboard>
8
9#include "clipwindow.h"
10
11ClipWindow::ClipWindow(QWidget *parent)
12 : QMainWindow(parent)
13{
14 clipboard = QGuiApplication::clipboard();
15
16 QWidget *centralWidget = new QWidget(this);
17 QWidget *currentItem = new QWidget(centralWidget);
18 QLabel *mimeTypeLabel = new QLabel(tr("MIME types:"), currentItem);
19 mimeTypeCombo = new QComboBox(currentItem);
20 QLabel *dataLabel = new QLabel(tr("Data:"), currentItem);
21 dataInfoLabel = new QLabel("", currentItem);
22
23 previousItems = new QListWidget(centralWidget);
24
25//! [0]
26 connect(clipboard, &QClipboard::dataChanged,
27 this, &ClipWindow::updateClipboard);
28//! [0]
29
30 QVBoxLayout *currentLayout = new QVBoxLayout(currentItem);
31 currentLayout->addWidget(mimeTypeLabel);
32 currentLayout->addWidget(mimeTypeCombo);
33 currentLayout->addWidget(dataLabel);
34 currentLayout->addWidget(dataInfoLabel);
35 currentLayout->addStretch(1);
36
37 QHBoxLayout *mainLayout = new QHBoxLayout(centralWidget);
38 mainLayout->addWidget(currentItem, 1);
39 mainLayout->addWidget(previousItems);
40
41 setCentralWidget(centralWidget);
42 setWindowTitle(tr("Clipboard"));
43}
44
45//! [1]
46void ClipWindow::updateClipboard()
47{
48 mimeTypeCombo->clear();
49
50 QStringList formats = clipboard->mimeData()->formats();
51 if (formats.isEmpty())
52 return;
53
54 for (const auto &format : formats) {
55 QByteArray data = clipboard->mimeData()->data(format);
56 // ...
57 }
58//! [1]
59
60 mimeTypeCombo->addItems(formats);
61
62 int size = clipboard->mimeData()->data(formats[0]).size();
63 QListWidgetItem *newItem = new QListWidgetItem(previousItems);
64 newItem->setText(tr("%1 (%2 bytes)").arg(formats[0]).arg(size));
65
66 updateData(formats[0]);
67}
68
69void ClipWindow::updateData(const QString &format)
70{
71 QByteArray data = clipboard->mimeData()->data(format);
72 dataInfoLabel->setText(tr("%1 bytes").arg(data.size()));
73}
void updateData(const QString &format)