要在Qt中拖放文件并打开它们,您需要执行以下步骤:
创建一个QWidget或QMainWindow窗口,并在其上设置setAcceptDrops(true)。这将使该窗口接受拖放操作。
重写dragEnterEvent和dropEvent方法以处理拖放事件。在dragEnterEvent中,检查MIME类型是否为文件类型。如果是,则调用event->acceptProposedAction()方法接受该事件。在dropEvent中,获取已拖动的文件列表,并对每个文件执行所需的操作(例如,使用QDesktopServices::openUrl打开文件)。
下面是一个简单的例子:
class MyWidget : public QWidget {
public:
MyWidget(QWidget *parent = nullptr) : QWidget(parent) {
setAcceptDrops(true);
}
protected:
void dragEnterEvent(QDragEnterEvent *event) override {
if (event->mimeData()->hasUrls()) {
event->acceptProposedAction();
}
}
void dropEvent(QDropEvent *event) override {
QList<QUrl> urls = event->mimeData()->urls();
for (const QUrl &url : urls) {
QString filePath = url.toLocalFile();
// Do whatever you need with the file path, e.g.
QDesktopServices::openUrl(url);
}
}
};