zoukankan      html  css  js  c++  java
  • Qt 接受拖放

    第一步:在构造函数里面 添加拖放支持,相当于总开关(注意这里设置之后是整个窗口可以接受拖放)

    setAcceptDrops(true);

    第二步:重写接受拖放相关的虚函数

    void dragEnterEvent(QDragEnterEvent* event);
    void dragMoveEvent(QDragMoveEvent* event);
    void dragLeaveEvent(QDragLeaveEvent* event);
    void dropEvent(QDropEvent* event);

    第三步:实现以上虚函数,并在 dragEnterEvent 函数里面 过滤拖进来的内容

    // 有东西被拖进来(拖着,未松开鼠标)
    void QtTest::dragEnterEvent(QDragEnterEvent* event)
    {
        // 拖进来的东西属于哪种内容保存在formats里面
        QStringList formats = event->mimeData()->formats();
        for (int i = 0; i < formats.size(); i++)
        {
            qDebug() << "formats : " << formats.at(i);
        }
        // 如果是文本才接受拖放
        if (event->mimeData()->hasText())
        {
            event->acceptProposedAction();
        }
    }
    
    // 东西拖进来移动
    void QtTest::dragMoveEvent(QDragMoveEvent* event)
    {
        qDebug() << "dragMoveEvent!" << endl;
    }
    
    // 东西拖进来没有放下离开了
    void QtTest::dragLeaveEvent(QDragLeaveEvent* event)
    {
        qDebug() << "dragLeaveEvent!" << endl;
    }
    
    // 有东西被放下(松开鼠标)
    void QtTest::dropEvent(QDropEvent* event)
    {
        // 判断进来的内容如果是文本,就直接设置label控件的内容
        if (event->mimeData()->hasText())
        {
            ui.label->setText(event->mimeData()->text());
        }
    }
  • 相关阅读:
    Eleven-面向对象进阶
    Ten-面向对象
    Nine-常用模块
    Eight-内置函数和匿名函数
    Seven-递归函数和装饰器函数
    Six-迭代器和生成器
    Five-函数
    Four-深浅copy和文件操作
    Third-基础数据类型
    Second-基础
  • 原文地址:https://www.cnblogs.com/duxie/p/11805591.html
Copyright © 2011-2022 走看看