#include "widget.h"
#include "ui_widget.h"
/*
备注:
不能拖放原因:qtcreator不能以管理员权限打开,否则不能拖放。
*/
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
this->setAcceptDrops(true);//是一个QWidget函数,用于设置是否接收鼠标拖放事件,设置为true表示接收鼠标拖放事件;否则不接受鼠标拖放事件
ui->label->setAcceptDrops(false);
ui->plainTextEdit->setAcceptDrops(false);
ui->label->setScaledContents(true);//根据lable框大小,自动调整
}
Widget::~Widget()
{
delete ui;
}
//鼠标拖拽离开事件
void Widget::dropEvent(QDropEvent *event)
{
QString filePath = event->mimeData()->urls().at(0).path();
filePath = filePath.right(filePath.length() - 1);
QPixmap pix(filePath);
ui->label->setPixmap(pix);
event->accept();
}
//鼠标拖拽进入事件
void Widget::dragEnterEvent(QDragEnterEvent *event)
{
ui->plainTextEdit->clear();
ui->plainTextEdit->appendPlainText("Drag Enter Info: ");
//显示拖入的图片信息
for(auto &item:event->mimeData()->formats())
ui->plainTextEdit->appendPlainText(item);
//打印文件路径
ui->plainTextEdit->appendPlainText("Drag Enter urls: ");
for(auto &item:event->mimeData()->urls())
ui->plainTextEdit->appendPlainText(item.path());
//文件路径名第一个字符是'/',这个字符用不着,需要去掉
if(event->mimeData()->hasUrls()){
QString fileName = event->mimeData()->urls().at(0).fileName();
QFileInfo fileInfo(fileName);
QString ex = fileInfo.suffix().toUpper();
if(ex == "JPG")
event->acceptProposedAction();//接收这个东西进门
else {
event->ignore();
}
}else {
event->ignore();
}
event->accept();
}
//重新调整大小事件
void Widget::resizeEvent(QResizeEvent *event)
{
QSize sz = ui->plainTextEdit->size();
ui->plainTextEdit->move(5,5);
ui->label->move(5,sz.height()+10);
ui->plainTextEdit->resize(this->width()- 10,sz.height());
ui->label->resize(this->width() - 10,this->height() - sz.height() -20);
event->accept();
}
Qt中的拖放
于 2023-11-07 17:26:06 首次发布