【发布时间】:2016-11-29 15:44:16
【问题描述】:
我希望允许用户从QTableWidget 单元格中拖动文件路径并将其放到文件管理器(例如 Windows 资源管理器)中以创建链接(Windows file shortcut)。
我认为这需要修改拖动的对象数据?
首先,我尝试子类化 QTableWidget 来重新实现事件
#include <QTableWidget>
#include <QEvent>
class tableWidget : public QTableWidget
{
Q_OBJECT
public:
tableWidget(QWidget *parent = 0);
~tableWidget();
protected:
void dragEnterEvent(QDragEnterEvent *event);
void dragMoveEvent(QDragMoveEvent *event);
void dragLeaveEvent(QDragLeaveEvent *event);
void dropEvent(QDropEvent *event);
};
并在 Qt Designer 中将QTableWidget“提升”为我的tableWidget(确保objectName 不与类相同)并将dragEnabled设置为true。
但是,事件处理程序似乎没有被执行。
所以我想我可能找错地方了,但QTableWidgetItem 似乎没有实现拖放事件,尽管its documentation 说
默认情况下,项目是启用的、可编辑的、可选择的、可检查的,并且可以用作拖放操作的源和放置目标。
我需要做什么才能创建这种行为?是否需要手动创建QDrag对象,如Drag and Drop所示?
【问题讨论】:
标签: c++ windows qt drag-and-drop