gpt4 book ai didi

c++ - Qt Drop 事件未触发

转载 作者:行者123 更新时间:2023-11-30 03:19:15 24 4
gpt4 key购买 nike

虽然调用了“setAcceptDrops”,但不会发生 Drop 事件。以下代码基于使用 Qt 5.12.0 创建的 widget 项目。添加 dropEvent() 函数后,cpp 文件变为

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug> // added

MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
setAcceptDrops(true); // added
}

MainWindow::~MainWindow()
{
delete ui;
}

// added; in .h it is in `protected:' section
void MainWindow::dropEvent(QDropEvent *event)
{
qDebug() << "dropEvent";
}

我错过了什么?我已经苦苦挣扎了几天...提前致谢。

最佳答案

您必须重写 dragEnterEvent 方法,该方法允许您按数据类型、源和操作类型进行过滤。在下面的例子中,一切都被接受:

*.h

// ...
protected:
void dropEvent(QDropEvent *event) override;
void dragEnterEvent(QDragEnterEvent *event) override;
// ...

*.cpp

MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
setAcceptDrops(true); // added
}

// ...
void MainWindow::dropEvent(QDropEvent *event)
{
qDebug() << "dropEvent" << event;
}
void MainWindow::dragEnterEvent(QDragEnterEvent *event)
{
event->acceptProposedAction();
}

有关更多详细信息,我建议您阅读 Drag and Drop .

关于c++ - Qt Drop 事件未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53870847/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com