void Scene::dropEvent(QGraphicsSceneDragDropEvent * event) { QList<QUrl> urls = event->mimeData()->urls(); if (urls.count()) { QString filename = urls[0].toLocalFile(); emit dropedFilename(filename); event->acceptProposedAction(); } }
MainWindow::MainWindow(QWidget *parent, const QString &fileName) : QMainWindow(parent) { setupUi(this); _zoom = new QLabel(); _zoom->setToolTip(QString("Zoom factor")); _zoom->setFrameStyle(QFrame::Sunken); _zoom->setAlignment(Qt::AlignHCenter); _zoom->setMaximumWidth(50); this->statusBar()->addPermanentWidget(_zoom, 1); setAcceptDrops(true); fileWatcher = 0; imageItem = 0; gViewResult->viewport()->setGeometry(QRect(0,0,0,0)); imageScene = new Scene(); connect(imageScene, SIGNAL(dropedFilename(QString)), this, SLOT(openImage(QString))); connect(imageScene, SIGNAL(sceneScaleChanged(qreal)), this, SLOT(changeSceneScale(qreal))); connect(imageScene, SIGNAL(rotateImage(int)), this, SLOT(rotate(int))); connect(imageScene, SIGNAL(imageInfoTriggered()), this, SLOT(imageInfo())); connect(imageScene, SIGNAL(detectOrientationSignal()), this, SLOT(on_actionDetectOrientation_triggered())); gViewResult->setScene(imageScene); gViewResult->setRenderHint(QPainter::Antialiasing); gViewResult->setCacheMode(QGraphicsView::CacheBackground); gViewResult->setViewportUpdateMode(QGraphicsView::BoundingRectViewportUpdate); gViewResult->setOptimizationFlags(QGraphicsView::DontSavePainterState | QGraphicsView::DontAdjustForAntialiasing); gViewResult->viewport()->setSizeIncrement(gViewResult->sceneRect().width(),gViewResult->sceneRect().height()); gViewResult->viewport()->setSizeIncrement(gViewResult->sceneRect().width(),gViewResult->sceneRect().height()); connect(actionAbout, SIGNAL(triggered()), this, SLOT(about())); connect(actionAbout_Qt, SIGNAL(triggered()), this, SLOT(aboutQt())); for (int i = 0; i < MaxRecentFiles; ++i) { recentFileActs[i] = new QAction(this); recentFileActs[i]->setVisible(false); connect(recentFileActs[i], SIGNAL(triggered()), this, SLOT(openRecentFile())); } fSeparatorAct = menuFile->addSeparator(); for (int i = 0; i < MaxRecentFiles; ++i) menuFile->addAction(recentFileActs[i]); updateRecentFileActions(); readSettings(true); if (fileName.isEmpty()) { // Open last file on init if there was no argument recentFile = recentFileActs[0]->data().toString(); } else { recentFile = fileName; setZoom(1.0); } if (!recentFile.isEmpty()) openImage(recentFile); // default values for Clean Dark Background blackval = 70; whiteval = 180; thresh = 60; }