• 3103阅读
  • 2回复

新手关于QT拖拽的问题 (结贴) [复制链接]

上一主题 下一主题
离线l_xin
 
只看楼主 倒序阅读 楼主  发表于: 2009-09-03
void MainWindow::dragEnterEvent(QDragEnterEvent *event)
{
if (event->mimeData()->hasFormat("text/uri-list"))
event->acceptProposedAction();
}
void MainWindow::dropEvent(QDropEvent *event)
{
QList<QUrl> urls = event->mimeData()->urls();
if (urls.isEmpty())
return;
QString fileName;
for (int i = 0; i<urls.size();i++){
   fileName.append(urls.toLocalFile());
}
if (fileName.isEmpty())
return;
textEdit->setText(fileName);

}
MainWindow::MainWindow()
    : QMainWindow()
{
    this->setGeometry(50,50,400,400);
    textEdit = new QTextEdit(this);
    textEdit->setGeometry(10,10,200,200);
textEdit->setAcceptDrops(true);
setAcceptDrops(false);
setWindowTitle(tr("Text Editor"));
}

我已经设置了textEdit的acceptDrop为true,mainwindow的为false
为什么拖拽的时候在mainwindow上还是可以DROP??
是我设置的属性不对么?
请指教,谢谢
[ 此帖被l_xin在2009-09-03 11:44重新编辑 ]
离线l_xin
只看该作者 1楼 发表于: 2009-09-03
研究了一下,貌似要修改控件的dragEnterEvent。
我重新写了一段:
QDragEnterEvent *dragEv;
dragEv->mimeData()->hasFormat("text/uri-list");
dragEv->acceptProposedAction();
然后把event传入textEdit:
textEdit->dragEnterEvent(dragEv);

debug的时候报错了,说是
error: `virtual void QTextEdit::dragEnterEvent(QDragEnterEvent*)' is protected

我应该怎样做是正确的?
离线l_xin
只看该作者 2楼 发表于: 2009-09-03
算了…………我继承/重写这个类吧- -#
快速回复
限100 字节
 
上一个 下一个