qt关于QLabel控件的实现双击调用文件对话框
<span style="font-family: Arial, Helvetica, sans-serif; white-space: normal; background-color: rgb(255, 255, 255);">这里是手动添加以QLabel为基类c++类,重载mouseDoubleClickEvent()</span>
<span style="font-family:Arial, Helvetica, sans-serif;"><span style="white-space: normal; background-color: rgb(255, 255, 255);">nlabel.h</span></span>
<span style="font-family:Arial, Helvetica, sans-serif;"><span style="white-space: normal; background-color: rgb(255, 255, 255);"> </span></span>
#ifndef NLABEL_H #define NLABEL_H #include <QLabel> class nLabel : public QLabel { public: explicit nLabel(QWidget *parent = 0); ~nLabel(); public: void mouseDoubleClickEvent(QMouseEvent *); }; #endif // NLABEL_H
nlabel.cpp
#include "nlabel.h" #include <QFileDialog> nLabel::nLabel(QWidget *parent): QLabel(parent) { } nLabel::~nLabel() { } void nLabel::mouseDoubleClickEvent(QMouseEvent *) { QStringList fileNameList; QString fileName0; QFileDialog* fd = new QFileDialog(this); //创建对话框 fd->resize(240,320); //设置显示的大小 fd->setNameFilter("Images (*.png *.xpm *.jpg)"); //设置文件过滤器 fd->setViewMode(QFileDialog::List); //设置浏览模式,有 列表(list) 模式和 详细信息(detail)两种方式 if ( fd->exec() == QDialog::Accepted ) //如果成功的执行 { fileNameList = fd->selectedFiles(); //返回文件列表的名称 fileName0 = fileNameList[0]; //取第一个文件名 this->setScaledContents(true); //设置图片显示时自动匹配大小 this->setPixmap(fileName0); //显示图片 } else fd->close(); }
写完后将控件提升为这个类就可以了。
上一篇:
IDEA上Java项目控制台中文乱码