Qt--小项目:拖放系统的简单实现

简介:在自定义控件中使用Qt拖放机制。

功能:拖放图片至窗口,用QLabel显示相应图片。

Qt 拖放机制的实现

步骤:要使用Qt的拖放机制,一般分三个部分:

1、启用

将自定义控件设置为能够接受drop事件。

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    label = new QLabel(this);
    QVBoxLayout *vbox = new QVBoxLayout(this);
    vbox->addWidget(label);
    this->setLayout(vbox);
    this->resize(300,200);
    //设置接收drop事件
    this->setAcceptDrops(true);
}

2、重新实现dragEnterEvent()

void Widget::dragEnterEvent(QDragEnterEvent *event)
{
    if(event->mimeData()->hasUrls() ){
        //将drop操作设置为建议的操作。
        event->acceptProposedAction();
    }else
        event->ignore();
}

3、重新实现dropEvent()

void Widget::dropEvent(QDropEvent *event)
{
    //获取拖放事件的QUrl
    QList<QUrl> urlList =  event->mimeData()->urls();
    //得到本地路径
    QString filePath = urlList.at(0).toLocalFile();
    //用路径构造QFileInfo
    QFileInfo fileInfo(filePath);
    //判断当前路径是否是文件
    if(fileInfo.isFile()){
        //获取文件类型,即后缀名
        QString suffix = fileInfo.suffix();
        //获取Qt支持的图片类型
        QList<QByteArray> imageList = QImageReader::supportedImageFormats();
        //判断文件类型是否是支持的图片类型
        if(imageList.contains(suffix.toUtf8())){
            //获取图片
            QPixmap pixmap;
            pixmap.load(filePath);
            //用QLabel显示图片
            label->setPixmap(pixmap);
            //设置QLabel大小
            label->resize(pixmap.width(),pixmap.height());
            //根据label的支持调整大小
            this->adjustSize();
        }
    }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值