Archive for 九月, 2014
QT拖拽文件、文件夹及遍历文件夹简单案例
星期五, 九月 19th, 2014 136 views首先是实现QT的窗体拖拽功能将文件拖拽进入Mainwindow,需要实现代码如下:
1 2 3 4 5 6 7 | MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); setAcceptDrops(true);//将Mainwindow设置成可相应拖拽事件 } |
这里的 setAcceptDrops(true); 将Mainwindow设置成可相应拖拽事件,接下来,重载dragEnterEvent和dropEvent方法,实现对拖拽内容的判断和操作,如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | //拖入Mainwindow时触发 void MainWindow::dragEnterEvent(QDragEnterEvent *event){ if(event->mimeData()->hasUrls()) { foreach(QUrl url, event->mimeData()->urls()) { if(!url.isEmpty()) event->accept();//界面反馈表示可拖拽 } return; } else { event->ignore();//界面反馈表示不可拖拽 } } //松开鼠标后触发 void MainWindow::dropEvent(QDropEvent *event) { if(event->mimeData()->hasUrls()) { foreach(QUrl url, event->mimeData()->urls()) { QFileInfo fileInfo(url.toString()); QString filePath = fileInfo.filePath().remove(0, QDir::currentPath().size() + 9); if(fileInfo.fileName().contains(".")){//根据是否带"."判断是否是文件夹 //属于文件 }else{ //属于文件夹 FindFile(filePath);//遍历文件夹递归函数 } } return; } return; } |
QT实现启动画面
星期三, 九月 10th, 2014 35 views代码如下,详解见注释,效果请自行编译运行
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | #include "mainwindow.h" #include <QApplication> #include <QSplashScreen> #include <QPixmap> #include <QTextCodec> #include <QElapsedTimer> int main(int argc, char *argv[]) { QApplication a(argc, argv); QTextCodec *codec = QTextCodec::codecForName("UTF-8"); QTextCodec::setCodecForLocale(codec); QSplashScreen splash(QPixmap("./images/logo.png")); splash.setDisabled(true); //禁用用户的输入事件响应 否则点击会消失 splash.show(); splash.showMessage(QString::fromUtf8("检测版本信息中..."), Qt::AlignCenter|Qt::AlignBottom,Qt::black); //实现延时2s int delayTime = 2; QElapsedTimer timer; timer.start(); while(timer.elapsed() < (delayTime * 1000)) { a.processEvents(); } MainWindow w; splash.finish(&w);//关闭启动画面 w.show(); return a.exec(); } |
BeiTown
2014.09.10