我是 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();
}
当我将鼠标放在编辑线上并停留在上面时,我会在控制台中看到两条消息...我希望在鼠标进入时看到第一个消息,而当我的鼠标离开时看到第二个消息。
提前感谢您的帮助。