delegateImage property
This commit is contained in:
parent
a299c18ddc
commit
9e5451a1df
@ -126,6 +126,27 @@ void DeclarativeDragArea::setStartDragDistance(int distance)
|
||||
emit startDragDistanceChanged();
|
||||
}
|
||||
|
||||
// delegateImage
|
||||
QVariant DeclarativeDragArea::delegateImage() const
|
||||
{
|
||||
return m_delegateImage;
|
||||
}
|
||||
|
||||
void DeclarativeDragArea::setDelegateImage(const QVariant &image)
|
||||
{
|
||||
if (image.canConvert<QImage>() && image.value<QImage>() == m_delegateImage) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (image.canConvert<QImage>()) {
|
||||
m_delegateImage = image.value<QImage>();
|
||||
} else {
|
||||
m_delegateImage = image.value<QIcon>().pixmap(QSize(48, 48)).toImage();
|
||||
}
|
||||
|
||||
emit delegateImageChanged();
|
||||
}
|
||||
|
||||
// enabled
|
||||
bool DeclarativeDragArea::isEnabled() const
|
||||
{
|
||||
@ -177,7 +198,9 @@ void DeclarativeDragArea::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
|
||||
DeclarativeMimeData* dataCopy = new DeclarativeMimeData(m_data); //Qt will take ownership of this copy and delete it.
|
||||
drag->setMimeData(dataCopy);
|
||||
|
||||
if (m_delegate) {
|
||||
if (!m_delegateImage.isNull()) {
|
||||
drag->setPixmap(QPixmap::fromImage(m_delegateImage));
|
||||
} else if (m_delegate) {
|
||||
|
||||
// Render the delegate to a Pixmap
|
||||
|
||||
|
@ -80,6 +80,11 @@ class DeclarativeDragArea : public QDeclarativeItem
|
||||
*/
|
||||
Q_PROPERTY(int startDragDistance READ startDragDistance WRITE setStartDragDistance NOTIFY startDragDistanceChanged)
|
||||
|
||||
/**
|
||||
* an image to be used as delegate. if present overrides the delegate property. in can be either a QImage or a QIcon
|
||||
*/
|
||||
Q_PROPERTY(QVariant delegateImage READ delegateImage WRITE setDelegateImage NOTIFY delegateImageChanged)
|
||||
|
||||
public:
|
||||
DeclarativeDragArea(QDeclarativeItem *parent=0);
|
||||
~DeclarativeDragArea();
|
||||
@ -88,6 +93,8 @@ public:
|
||||
void setDelegate(QDeclarativeComponent* delegate);
|
||||
void resetDelegate();
|
||||
|
||||
QVariant delegateImage() const;
|
||||
void setDelegateImage(const QVariant &image);
|
||||
QDeclarativeItem* target() const;
|
||||
QDeclarativeItem* source() const;
|
||||
void setSource(QDeclarativeItem* source);
|
||||
@ -119,6 +126,7 @@ signals:
|
||||
void supportedActionsChanged();
|
||||
void defaultActionChanged();
|
||||
void startDragDistanceChanged();
|
||||
void delegateImageChanged();
|
||||
|
||||
protected:
|
||||
void mouseMoveEvent(QGraphicsSceneMouseEvent *event);
|
||||
@ -134,6 +142,7 @@ private:
|
||||
Qt::DropActions m_supportedActions;
|
||||
Qt::DropAction m_defaultAction;
|
||||
DeclarativeMimeData* const m_data;
|
||||
QImage m_delegateImage;
|
||||
int m_startDragDistance;
|
||||
};
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user