• 8303阅读
  • 0回复

重写ListView实现拖放功能 [复制链接]

上一主题 下一主题
离线lazybone
 
只看楼主 正序阅读 楼主  发表于: 2008-10-07
— 本帖被 XChinux 执行加亮操作(2008-11-30) —
主要是重写三个 event 方法
  1. import java.util.List;
  2. import com.trolltech.qt.core.QUrl;
  3. import com.trolltech.qt.core.Qt;
  4. import com.trolltech.qt.gui.QDragEnterEvent;
  5. import com.trolltech.qt.gui.QDragMoveEvent;
  6. import com.trolltech.qt.gui.QDropEvent;
  7. import com.trolltech.qt.gui.QListView;
  8. import com.trolltech.qt.gui.QStringListModel;
  9. class MyListView extends QListView {
  10.     List<String> list;
  11.     public MyListView() {
  12.         super();
  13.         setAcceptDrops(true);
  14.     }
  15.     public MyListView(Object widget) {
  16.         super();
  17.         setAcceptDrops(true);
  18.     }
  19.     public void dragEnterEvent(QDragEnterEvent event) {
  20.         event.setDropAction(Qt.DropAction.CopyAction);
  21.         event.accept();
  22.     }
  23.     public void dragMoveEvent(QDragMoveEvent event) {
  24.         event.accept();
  25.     }
  26.     public void dropEvent(QDropEvent event) {
  27.         for (QUrl fn : event.mimeData().urls()) {
  28.             String fileName = fn.toLocalFile().replace("file:///", "");
  29.             if (!list.contains(fileName))
  30.                 list.add(fileName);
  31.         }
  32.         ((QStringListModel) this.model()).setStringList(list);
  33.         System.out.println(event.mimeData().urls().get(0).toString());
  34.         event.accept();
  35.     }
  36.     public List<String> getList() {
  37.         return list;
  38.     }
  39.     public void setList(List<String> list) {
  40.         this.list = list;
  41.     }
  42. }

快速回复
限100 字节
 
上一个 下一个