crossplatform.ru

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


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

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
Теги
Выровнять по центру
Ссылка на тему
Ссылка на сообщение
Скрытый текст
Сокращение
Код с подсветкой
Offtopic
 
Удалить форматирование
Спец. элементы
Шрифт
Размер
 
Цвет шрифта
 
Отменить ввод
Вернуть ввод
Полужирный
Курсив
Подчеркнутый
 
 
Смайлики
Вставить изображение
Вставить адрес электронной почты
Цитата
Код
Раскрывающийся текст
 
Увеличить отступ
По левому краю
По центру
По правому краю
Вставить список
Вставить список

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


Последние 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 Рейтинг@Mail.ru Текстовая версия Сейчас: 10.7.2025, 16:52