crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> QPainter c drag and drop, не хватает мозгов перетаскивать нарисованный оввал
zaych361
  опции профиля:
сообщение 24.4.2011, 15:55
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 1
Регистрация: 24.4.2011
Пользователь №: 2626

Спасибо сказали: 0 раз(а)




Репутация:   0  


Доброе время суток! В текущем проекте множество рисованный элементов нужно будет перетаскивать. Решил попробывать на простом овале. 8 ошибок. Как я понимаю, проблема в
 mimeData->setText();
          mimeData->setImageData(image);
          drag->setMimeData(mimeData);
          drag->setPixmap(iconPixmap);

Подскажите правильную реализацию (или угостите ссылкой).Привожу текущий листинг. Заранее спасибо
Раскрывающийся текст
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QPainter>
#include <QImage>
#include <QWidget>
#include <QMimeData>
#include <QDrag>
#include <QDragMoveEvent>
#include <QDropEvent>
#include <QListWidget>
#include <QMouseEvent>
#include <QListWidget>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}
void QWidget::paintEvent(QPaintEvent *event)
{
    QPainter painter(this);

         painter.setBrush(QBrush(Qt::green, Qt::SolidPattern));
         painter.drawEllipse(20, 100, 300, 200);

    painter.end();

};

class QDragEnterEvent;
class QDropEvent;

class DragWidget : public QWidget
{
public:
     DragWidget(QWidget *parent = 0);

protected:
     void dragEnterEvent(QDragEnterEvent *event);
     void dragMoveEvent(QDragMoveEvent *event);
     void dropEvent(QDropEvent *event);
     void mousePressEvent(QMouseEvent *event);
};
void QWidget::mousePressEvent(QMouseEvent *event)
  {
      if (event->button() == Qt::LeftButton) {

          QDrag *drag = new QDrag(this);
          QMimeData *mimeData = new QMimeData;

          mimeData->setText();
          mimeData->setImageData(image);
          drag->setMimeData(mimeData);
          drag->setPixmap(iconPixmap);

          Qt::DropAction dropAction = drag->exec();
          event->accept();
      }
  }
void QWidget::dragEnterEvent(QDragEnterEvent *event)
  {
      if (event->mimeData()->hasText() || event->mimeData()->hasImage())
          event->acceptProposedAction();
  }
void QWidget::dropEvent(QDropEvent *event)
  {
      if (event->mimeData()->hasText())
          dataLabel->setText(event->mimeData()->text());
      else if (event->mimeData()->hasImage()) {
          QVariant imageData = event->mimeData()->imageData();
          dataLabel->setPixmap(qvariant_cast<QPaintEvent>(imageData));
      }
      event->acceptProposedAction();
  }

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 21.12.2024, 17:23