【发布时间】:2021-03-17 09:35:48
【问题描述】:
我是 qt 的初学者,我做我的第一个项目。我遇到了问题。
我将一些编辑行放在滚动区域中。所有这些编辑文本都应该包含文件的路径。为了使这个应用程序更加用户友好,我决定实现拖放。通过这种方式,用户可以从他们的资源管理器中获取一个文件并将其拖放到行编辑中,该行将填充文件的路径。
我的问题是:当我尝试删除时,我的鼠标经过的所有编辑行都将填充文件的路径。如果我通过 else if 更改 if 语句,它是我的鼠标传递的第一个编辑行,它将被填充,但不是我的鼠标在下降时所在的那个。
这里是代码:
void MainWindow::dragEnterEvent(QDragEnterEvent *e)
{
e->accept()
}
void MainWindow::dropEvent(QDropEvent *e)
{
foreach (const QUrl &url, e->mimeData()->urls()) {
QString fileName = StringManagement::getDir(url.toLocalFile());
if(ui->lineEdit->underMouse())
ui->lineEdit->setText(fileName);
if(ui->lineEdit_2->underMouse())
ui->lineEdit_2->setText(fileName);
if(ui->lineEdit_5->underMouse())
ui->lineEdit_5->setText(fileName);
if(ui->lineEdit_9->underMouse())
ui->lineEdit_9->setText(fileName);
if(ui->lineEdit_10->underMouse())
ui->lineEdit_10->setText(fileName);
if(ui->lineEdit_11->underMouse())
ui->lineEdit_11->setText(fileName);
}
}
我不太明白的另一点是:
<pre><code>void MainWindow::dragEnterEvent(QDragEnterEvent *e)
{
qInfo() << "enter";
e->accept();
}
void MainWindow::dragLeaveEvent(QDragLeaveEvent *e){
qInfo() << "leave";
e->accept();
}
当我将鼠标放在编辑线上并停留在上面时,我会在控制台中看到两条消息...我希望在鼠标进入时看到第一个消息,当鼠标离开时看到第二个消息.
提前感谢您的帮助。
【问题讨论】:
-
我不太明白您要做什么。当您在 scrollArea 中拖放多个文件时,您想同时填充所有 lineEdit 还是只想在每个 lineEdit 中一次拖放文件?
-
@Irisciences 没有。对不起,如果你不明白。我的意思是,我在资源管理器中获取一个文件并尝试将其放入一行编辑中。问题是 drop 也填满了我的鼠标经过的所有 lineEdit。
标签: c++ qt drag-and-drop drop editline