亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? qmimedata.cpp

?? QT 開發環境里面一個很重要的文件
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
/******************************************************************************** Copyright (C) 1992-2006 Trolltech ASA. All rights reserved.**** This file is part of the QtCore module of the Qt Toolkit.**** This file may be used under the terms of the GNU General Public** License version 2.0 as published by the Free Software Foundation** and appearing in the file LICENSE.GPL included in the packaging of** this file.  Please review the following information to ensure GNU** General Public Licensing requirements will be met:** http://www.trolltech.com/products/qt/opensource.html**** If you are unsure which license is appropriate for your use, please** review the following information:** http://www.trolltech.com/products/qt/licensing.html or contact the** sales department at sales@trolltech.com.**** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.******************************************************************************/#include "qmimedata.h"#include "private/qobject_p.h"#include "qurl.h"#include "qstringlist.h"#include "qtextcodec.h"struct QMimeDataStruct{    QString format;    QVariant data;};class QMimeDataPrivate : public QObjectPrivate{    Q_DECLARE_PUBLIC(QMimeData)public:    void setData(const QString &format, const QVariant &data);    QVariant getData(const QString &format) const;    QVariant retrieveTypedData(const QString &format, QVariant::Type type) const;    QList<QMimeDataStruct> dataList;};void QMimeDataPrivate::setData(const QString &format, const QVariant &data){    // remove it first if the format is already here.    for (int i=0; i<dataList.size(); i++) {        if (dataList.at(i).format == format) {            dataList.removeAt(i);            break;        }    }    QMimeDataStruct mimeData;    mimeData.format = format;    mimeData.data = data;    dataList += mimeData;}QVariant QMimeDataPrivate::getData(const QString &format) const{    QVariant data;    for (int i=0; i<dataList.size(); i++) {        if (dataList.at(i).format == format) {            data = dataList.at(i).data;            break;        }    }    return data;}QVariant QMimeDataPrivate::retrieveTypedData(const QString &format, QVariant::Type type) const{    Q_Q(const QMimeData);    QVariant data = q->retrieveData(format, type);    if (data.type() == type || data.type() == QVariant::Invalid)        return data;    // provide more conversion possiblities than just what QVariant provides    // URLs can be lists as well...    if (type == QVariant::Url && data.type() == QVariant::List        || type == QVariant::List && data.type() == QVariant::Url)        return data;    // images and pixmaps are interchangeable    if (type == QVariant::Pixmap && data.type() == QVariant::Image        || type == QVariant::Image && data.type() == QVariant::Pixmap)        return data;    if (data.type() == QVariant::ByteArray) {        // see if we can convert to the requested type        switch(type) {#ifndef QT_NO_TEXTCODEC        case QVariant::String: {            const QByteArray ba = data.toByteArray();            QTextCodec *codec = QTextCodec::codecForName("utf-8");            if (format == QLatin1String("text/html"))                codec = QTextCodec::codecForHtml(ba);            return codec->toUnicode(ba);        }#endif // QT_NO_TEXTCODEC        case QVariant::Color: {            QVariant newData = data;            newData.convert(QVariant::Color);            return newData;        }        case QVariant::List: {            if (format != QLatin1String("text/uri-list"))                break;            // fall through        }        case QVariant::Url: {            QList<QVariant> list;            QList<QByteArray> urls = data.toByteArray().split('\n');            for (int i = 0; i < urls.size(); ++i) {                QByteArray ba = urls.at(i).trimmed();                list.append(QUrl::fromEncoded(ba));            }            return list;        }        default:            break;        }    } else if (type == QVariant::ByteArray) {        // try to convert to bytearray        switch(data.type()) {        case QVariant::ByteArray:        case QVariant::Color:            return data.toByteArray();            break;        case QVariant::String:            return data.toString().toUtf8();            break;        case QVariant::Url:            return data.toUrl().toEncoded();            break;        case QVariant::List: {            // has to be list of URLs            QByteArray result;            QList<QVariant> list = data.toList();            for (int i = 0; i < list.size(); ++i) {                if (list.at(i).type() == QVariant::Url) {                    result += list.at(i).toUrl().toEncoded();                    result += "\r\n";                }            }            if (!result.isEmpty())                return result;            break;        }        default:            break;        }    }    return data;}/*!    \class QMimeData    \brief The QMimeData class provides a container for data that records information    about its MIME type.    QMimeData is used to describe information that can be stored in    the \l{QClipboard}{clipboard}, and transferred via the \l{drag    and drop} mechanism. QMimeData objects associate the data that    they hold with the corresponding MIME types to ensure that    information can be safely transferred between applications, and    copied around within the same application.    QMimeData objects are usually created using \c new and supplied    to QDrag or QClipboard objects. This is to enable Qt to manage    the memory that they use.    A single QMimeData object can store the same data using several    different formats at the same time. The formats() function    returns a list of the available formats in order of preference.    The data() function returns the raw data associated with a MIME    type, and setData() allows you to set the data for a MIME type.    For the most common MIME types, QMimeData provides convenience    functions to access the data:    \table    \header \o Tester       \o Getter       \o Setter           \o MIME Types    \row    \o hasText()    \o text()       \o setText()        \o \c text/plain    \row    \o hasHtml()    \o html()       \o setHtml()        \o \c text/html    \row    \o hasUrls()    \o urls()       \o setUrls()        \o \c text/uri-list    \row    \o hasImage()   \o imageData()  \o setImageData()   \o \c image/ *    \row    \o hasColor()   \o colorData()  \o setColorData()   \o \c application/x-color    \endtable    For example, if your write a widget that accepts URL drags, you    would end up writing code like this:    \code        void MyWidget::dragEnterEvent(QDragEnterEvent *event)        {            if (event->mimeData()->hasUrl())                event->acceptProposedEvent();        }        void MyWidget::dropEvent(QDropEvent *event)        {            if (event->mimeData()->hasUrl()) {                QUrl url = event->mimeData()->url();                ...            }        }    \endcode    There are three appraches for storing custom data in a QMimeData    object:    \list 1    \o  Custom data can be stored directly in a QMimeData object as a        QByteArray using setData(). For example:        \code            QByteArray csvData = ...;            QMimeData *mimeData = new QMimeData;            mimeData->setData("text/csv", csvData);        \endcode    \o  We can subclass QMimeData and reimplement hasFormat(),        formats(), and retrieveData().    \o  If the drag and drop operation occurs withing a single        application, we can subclass QMimeData and add extra data in        it, and use a qobject_cast() in the receiver's drop event        handler. For example:        \code        void MyWidget::dropEvent(QDropEvent *event)        {            const MyMimeData *myData =                    qobject_cast<const MyMimeData *>(event->mimeData());            if (myData) {                // access myData's data directly (not through QMimeData's API)            }        }        \endcode    \endlist    \sa QClipboard, QDragEnterEvent, QDragMoveEvent, QDropEvent, QDrag,        {Drag and Drop}*//*!    Constructs a new MIME data object with no data in it.*/QMimeData::QMimeData()    : QObject(*new QMimeDataPrivate, 0){}/*!    Destroys the MIME data object.*/QMimeData::~QMimeData(){}/*!    Returns a list of URLs contained within the MIME data object.    URLs correspond to the MIME type \c text/uri-list.    \sa hasUrls(), data()*/QList<QUrl> QMimeData::urls() const{    Q_D(const QMimeData);    QVariant data = d->retrieveTypedData(QLatin1String("text/uri-list"), QVariant::List);    QList<QUrl> urls;    if (data.type() == QVariant::Url)        urls.append(data.toUrl());    else if (data.type() == QVariant::List) {        QList<QVariant> list = data.toList();        for (int i = 0; i < list.size(); ++i) {            if (list.at(i).type() == QVariant::Url)                urls.append(list.at(i).toUrl());        }    }    return urls;}/*!

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
视频在线观看91| 欧美午夜寂寞影院| 欧美丝袜自拍制服另类| 欧美成人精品二区三区99精品| 欧美激情在线看| 男人的天堂亚洲一区| 91在线porny国产在线看| www久久久久| 日本不卡视频在线观看| 色吧成人激情小说| 国产精品理论在线观看| 国产一区亚洲一区| 日韩午夜激情电影| 亚洲成人自拍偷拍| 欧美性三三影院| 亚洲欧美另类综合偷拍| 懂色一区二区三区免费观看| 欧美不卡一区二区| 蜜桃av一区二区三区电影| 欧美日韩一区三区四区| 亚洲精品国产精品乱码不99| 成人国产在线观看| 国产精品水嫩水嫩| 国产999精品久久| 国产亚洲成年网址在线观看| 美日韩一区二区| 日韩美女在线视频| 久久99久久99小草精品免视看| 欧美视频一区二区在线观看| 亚洲男人的天堂一区二区 | 欧美性猛交xxxx黑人交| 中文字幕的久久| 成人精品国产免费网站| 国产精品久久久久国产精品日日 | 不卡影院免费观看| 国产精品免费视频一区| 懂色一区二区三区免费观看| 国产精品免费av| 日本伦理一区二区| 亚洲午夜久久久久| 欧美老年两性高潮| 久久综合综合久久综合| 欧美精品一区二区三区蜜桃视频 | 免费看欧美美女黄的网站| 在线播放欧美女士性生活| 日韩av一区二| 2020国产精品| 成a人片国产精品| 亚洲午夜在线视频| 欧美一级专区免费大片| 国产一区视频在线看| 国产精品成人免费在线| 欧美在线视频你懂得| 全部av―极品视觉盛宴亚洲| 精品国产一区二区在线观看| 丰满白嫩尤物一区二区| 亚洲码国产岛国毛片在线| 在线观看免费亚洲| 裸体歌舞表演一区二区| 中文字幕av一区 二区| 色成年激情久久综合| 视频在线在亚洲| 国产人成一区二区三区影院| 99久久亚洲一区二区三区青草| 亚洲蜜臀av乱码久久精品蜜桃| 欧美狂野另类xxxxoooo| 国产在线看一区| 亚洲精品免费在线观看| 欧美一二区视频| 成人精品一区二区三区四区| 洋洋av久久久久久久一区| 日韩一区二区三区在线观看| 国产传媒一区在线| 亚洲一二三专区| 精品国产99国产精品| 91亚洲精品乱码久久久久久蜜桃| 亚洲va韩国va欧美va| 久久久久99精品国产片| 在线欧美一区二区| 国产麻豆成人传媒免费观看| 一区二区在线电影| 国产三级一区二区| 91精品国产aⅴ一区二区| 成人免费毛片嘿嘿连载视频| 三级欧美在线一区| 一区二区三区四区乱视频| 精品三级在线看| 欧美午夜精品一区| 成人激情免费视频| 久久99国产精品久久| 亚洲成人tv网| 亚洲欧美日韩在线| 久久久精品中文字幕麻豆发布| 欧美日韩亚洲综合| 95精品视频在线| 国产成人精品亚洲日本在线桃色| 五月天网站亚洲| 亚洲欧洲美洲综合色网| 久久综合久久鬼色| 日韩精品一区二区三区视频| 91成人免费在线视频| 成年人午夜久久久| 成人午夜激情在线| 国产真实乱对白精彩久久| 日韩电影在线看| 99久久国产综合色|国产精品| 91精选在线观看| 99国产精品久久久久久久久久久 | 欧美人体做爰大胆视频| 国精产品一区一区三区mba桃花 | 欧美一区二区视频在线观看| 欧美伊人精品成人久久综合97| 99久久国产综合色|国产精品| 成人夜色视频网站在线观看| 国产裸体歌舞团一区二区| 精品一区二区免费看| 蜜臀av性久久久久蜜臀aⅴ四虎 | 91麻豆精品国产91久久久久| 欧美影视一区在线| 欧美日韩午夜在线视频| 欧美色倩网站大全免费| 欧美性淫爽ww久久久久无| 欧美系列亚洲系列| 欧美精品欧美精品系列| 5月丁香婷婷综合| 日韩一二三区视频| 欧美www视频| 国产午夜精品一区二区三区嫩草| 久久久天堂av| **欧美大码日韩| 亚洲一二三四在线| 日本美女一区二区三区| 精品一区二区在线免费观看| 国产一区二区在线观看视频| 国产精品一区二区三区网站| 成人看片黄a免费看在线| gogo大胆日本视频一区| 欧美国产日产图区| 亚洲欧洲一区二区在线播放| 洋洋成人永久网站入口| 日本成人中文字幕| 国产馆精品极品| 在线观看视频一区二区 | 99在线精品观看| 色先锋aa成人| 91精品国产高清一区二区三区蜜臀| 欧美一级一区二区| 国产精品无遮挡| 亚洲3atv精品一区二区三区| 久久国产免费看| 97精品久久久午夜一区二区三区 | 久久色中文字幕| 亚洲精品国产第一综合99久久| 天天色天天操综合| 国产宾馆实践打屁股91| 欧美日韩你懂得| 国产视频视频一区| 日韩精品1区2区3区| 成人高清免费观看| 在线播放中文一区| 亚洲欧美日韩小说| 久久精品国产久精国产爱| 成人av电影免费在线播放| 欧美高清视频一二三区| 国产精品久久久久一区二区三区| 亚洲国产一区二区a毛片| 黑人精品欧美一区二区蜜桃| 91尤物视频在线观看| 一区二区三区中文免费| 蜜臀久久99精品久久久久宅男| 91亚洲精品一区二区乱码| 精品美女在线播放| 亚洲一级二级在线| 成人av手机在线观看| 日韩亚洲欧美综合| 亚洲国产一区二区三区青草影视| 国产91露脸合集magnet| 欧美一区二区三区啪啪| 亚洲精品日韩专区silk| 国产超碰在线一区| 精品美女在线播放| 美女精品一区二区| 欧美久久久久中文字幕| 亚洲欧美偷拍卡通变态| 国产91丝袜在线18| 国产亚洲精品中文字幕| 久久99精品久久久| 日韩欧美在线123| 午夜激情综合网| 欧美亚洲综合在线| 一区二区日韩电影| av成人动漫在线观看| 国产精品欧美一区喷水| 国产精品99久| 国产日韩欧美高清在线| 国产91综合一区在线观看| 国产婷婷色一区二区三区 | 午夜精品福利一区二区蜜股av | 日韩欧美在线不卡| 免费人成精品欧美精品|