crossplatform.ru

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


  Ответ в QPainter c drag and drop
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
zaych361 Дата 24.4.2011, 15:55
  Доброе время суток! В текущем проекте множество рисованный элементов нужно будет перетаскивать. Решил попробывать на простом овале. 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();
  }

Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 29.3.2024, 16:44