qt 拖拽文件显示图片示例 - 计算机视觉 with OpenCV 3 and Qt 5

本节将编写一个可以通过拖拽显示图片的例程:

  1. 在 Qt Creator 中创建一个 Qt Widgets Application, 并命名为ImageViewer。
  2. 切换 Creator 到设计模式,拖拽一个 QLabel 到窗口中。在窗口中的空白处单击,按下ctrl +G 快捷键将控件按grid分布。这能够保证窗口中的所有内容都会随窗口尺寸进行缩放。
  3. 点击所拖拽的 Label 并将 alignment/Horizontal 属性 设置为 ALignHCenter, 并将 HorizontalPolicy(水平策略) 和 VerticalsizePolicy 垂直策略设置为 Ignored。接下来,将下列头文件包含到 mainwindow.h 文件中:
            #include <QPixmap>
            #include <QDragEnterEvent> 
            #include <QDropEvent> 
            #include <QMimeData> 
            #include <QFileInfo> 
            #include <QMessageBox> 
            #include <QResizeEvent> 
  4. 添加下列 protected 函数声明到 MainWindow 类中(mainwindow.h 文件)
  5.         protected: 
            void dragEnterEvent(QDragEnterEvent *event); 
            void dropEvent(QDropEvent *event); 
            void resizeEvent(QResizeEvent *event); 

    添加一个private QPixmap 到 mainwindow.h 文件
  6.  QPixmap pixmap; 
    添加下列函数定义到 mainwindow.cpp文件
  7. void MainWindow::dragEnterEvent(QDragEnterEvent *event) 
            { 
              QStringList acceptedFileTypes; 
              acceptedFileTypes.append("jpg"); 
              acceptedFileTypes.append("png"); 
              acceptedFileTypes.append("bmp"); 
     
              if (event->mimeData()->hasUrls() && 
                event->mimeData()->urls().count() == 1) 
              { 
               
                QFileInfo file(event->mimeData()->urls().at(0).toLocalFile()); 
                if(acceptedFileTypes.contains(file.suffix().toLower())) 
                { 
                  event->acceptProposedAction(); 
                } 
              } 
            } 
     void MainWindow::dropEvent(QDropEvent *event) 
            { 
              QFileInfo file(event->mimeData()->urls().at(0).toLocalFile()); 
              if(pixmap.load(file.absoluteFilePath())) 
              { 
               ui->label->setPixmap(pixmap.scaled(ui->label->size(), 
                   Qt::KeepAspectRatio, 
                   Qt::SmoothTransformation)); 
              } 
              else 
              { 
                QMessageBox::critical(this, 
                   tr("Error"), 
                   tr("The image file cannot be read!")); 
              } 
            } 
    void MainWindow::resizeEvent(QResizeEvent *event) 
            { 
              Q_UNUSED(event); 
              if(!pixmap.isNull()) 
              { 
                ui->label->setPixmap(pixmap.scaled(ui->label->width()-5, 
                                                  ui->label->height()-5, 
                                                  Qt::KeepAspectRatio, 
                                                  Qt::SmoothTransformation)); 
              } 
            } 
    运行程序。
  8. 这个程序的基本功能是接收一张拖拽过来的图片并显示。注意,必须添加 setAcceptDrops(true), 否则将不会接收拖拽文件。


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
计算机视觉是一门研究如何使计算机理解和解释图像和视频的领域。OpenCV是一个开源的计算机视觉库,提供了许多图像处理计算机视觉算法的实现。而Qt是一个跨平台的应用程序开发框架,可以用于编写图形用户界面(GUI)和应用程序逻辑。 在使用OpenCV3和Qt5编写计算机视觉代码时,可以充分利用OpenCV提供的各种功能来处理图像和视频。例如,可以使用OpenCV中的函数来加载、显示和保存图像,进行基本的图像增强和滤波操作,以及实现目标检测、特征提取和图像分割等高级计算机视觉任务。 Qt提供了一套齐全的工具和类库,可以方便地创建用户友好的图形用户界面,并且与OpenCV3的功能可以很好地集成。通过使用Qt的GUI设计工具,可以轻松地创建按钮、窗口和菜单等控件,用于控制和展示OpenCV处理的图像和视频。同时,Qt还提供了多线程支持,可以将计算密集型的图像处理任务放在后台线程中运行,以避免界面卡顿。 使用OpenCV3和Qt5编写计算机视觉代码,可以实现许多有趣和实用的应用。例如,可以开发一个实时人脸识别程序,通过OpenCV的人脸检测算法识别摄像头中的人脸,并在Qt界面中显示出来。还可以实现一个数字图像处理软件,提供各种图像增强、滤波和分割的功能,通过用户友好的界面进行操作。总之,结合OpenCV3和Qt5的强大功能,可以实现各种计算机视觉任务,并为用户提供友好的界面来控制和展示处理结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值