需要解决哪个类以支持Qt应用程序和查找器之间的拖放
which class need to be addressed to support drag'n drop between Qt app and finder
我正在尝试构建一个应用程序,该应用程序列出了从Android设备到查找器的文件夹和文件,并能够从/复制到PC。
我已经在我的浏览器中完成了如下课程.cpp
Browser::Browser(USBDevice dev, QWidget *parent) :
QTreeWidget(parent)
{
USBDevice MyDevice;
MyDevice = dev;
QMainWindow *window = new QMainWindow();
window->setWindowTitle(QString::fromUtf8("PULS"));
window->resize(600, 600);
// window->setDragEnabled(true);
// window->setAcceptDrops(true);
// window->setMouseTracking(true);
QWidget *centralWidget = new QWidget(window);
QPushButton* CreateFolderButton = new QPushButton("Create Folder", centralWidget);
CreateFolderButton->setFixedSize(100,20);
//QVBoxLayout* Layout = new QVBoxLayout(centralWidget);
//Layout->addWidget(CreateFolderButton);
QPushButton* DeleteButton = new QPushButton("Delete", centralWidget);
DeleteButton->setFixedSize(100,20);
QVBoxLayout* Layout = new QVBoxLayout(centralWidget);
Layout->addWidget(CreateFolderButton);
Layout->addWidget(DeleteButton);
QTreeWidget *MyTree = new QTreeWidget(centralWidget);
Layout->addWidget(MyTree);
MyTree->setSortingEnabled(true);
MyTree->setColumnWidth(0, 400);
MyTree->setDragDropMode(DragDrop);
MyTree->setDropIndicatorShown(true);
MyTree->setDragEnabled(true);
MyTree->setMouseTracking(true);
QTreeWidgetItem* headerItem = new QTreeWidgetItem();
headerItem->setText(0,QString("File Name"));
headerItem->setText(1,QString("Size (Bytes)"));
headerItem->setText(2,QString("Date"));
MyTree->setHeaderItem(headerItem);
Recursive_Parse(MyTree, MyDevice.device_id, MyDevice.device_id->storage, 0, 0, 0);
window->setCentralWidget(centralWidget);
MyButtonGroup* group = new MyButtonGroup(MyTree, MyDevice, MyDevice.device_id, MyDevice.device_id->storage, centralWidget);
group->addButton(CreateFolderButton);
group->addButton(DeleteButton);
window->show();
}
和浏览器.h 中的类作为
class Browser : public QTreeWidget
{
Q_OBJECT
public:
Browser(USBDevice dev, QWidget* parent = 0);
void dragEnterEvent(QDragEnterEvent *event);
void dropEvent(QDropEvent *event);
void dragMoveEvent(QDragMoveEvent *event);
void dragLeaveEvent(QDragLeaveEvent *event);
~Browser(){};
};
拖放在树中工作,即使它不能正常工作,我也可以移动东西,因为我可以将文件放在文件上并创建一个子文件。通过文件,我只是指TreeWidgetItemItem而不是真正的文件。这也是我需要补充的东西,但我不知道在哪里。
但我看不出如何处理dran'ndrop。我需要能够控制树内和树外的拖放,以便从/向我的计算机复制文件。
看来:
void dragEnterEvent(QDragEnterEvent *event);
void dropEvent(QDropEvent *event);
void dragMoveEvent(QDragMoveEvent *event);
void dragLeaveEvent(QDragLeaveEvent *event);
从不叫...即使拖放有效
知道如何处理事件和过载或自定义行为吗?
谢谢
被覆盖dragEnterEvent
和东西的类被命名为 Browser
,但是您不实例化它,而是实例化QTreeWidget
:
QTreeWidget *MyTree = new QTreeWidget(centralWidget);
所以这就是为什么没有来自Browser
的成员会被召唤的原因。你可能想写:
QTreeWidget *MyTree = new Browser(MyDevice, centralWidget);
或类似的东西。
相关文章:
- 可视化 使用 VS Code 查找C++应用程序中的内存泄漏
- Outlook MAPI in C++ 应用程序中:按姓名查找联系人
- 正在查找OpenMP+MPI应用程序的资源
- 转储内存以查找C++应用程序中的内存泄漏
- 部署后的Linux qt应用程序-符号查找错误:libQt5Core.so.5未定义的符号:uncv_getDefaul
- 尝试在hash_map中查找记录时应用程序崩溃
- Qt应用程序在从QtCreator启动时查找库,但不是从命令行启动
- 如何在没有源代码的tcp服务器应用程序中查找错误
- 如何查找所有应用程序的COM dll
- 如何查找Qt应用程序的安装目录
- 需要解决哪个类以支持Qt应用程序和查找器之间的拖放
- C++字符串::查找崩溃应用程序
- std::string异常以及如何查找已编译的c++应用程序的平台工具集
- 查找启动应用程序的lpClassName,以便在FindWindow wniapi c++中使用
- 调试Visual Studio c++应用程序并查找导致崩溃的特定函数
- 查找更新版本的应用程序
- 如何在c++中查找应用程序在任何时候使用了多少内存?
- 从VS10应用程序中查找/终止进程(VC6应用程序)
- 名称查找到刚刚声明的名称的应用程序
- 如何在 Visual Studio 中查找应用程序的入口点 (C++)