使用 Qt 批量选取指定类型文件源代码

使用 Qt 批量选取指定类型文件源代码

        本源码解决的问题有:Qt 中批量打开指定类型的文件;Qt 中文显示乱码;Qt 中 int 类型转换为 QString 类型。
        解决中文显示乱码 的问题:
        Qt 4.4/4.5 中,QString 默认编码为 Latin-1。因此直接使用中文 string 会出现乱码,通过设置 TextCodec 可以改变。假设源文件使用 UTF-8 编码,所有 QString,tr 都使用 UTF-8 编码,可以在 main.cpp 中加入:
QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8")); QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
        现在可以直接使用中文字符串,以及在 tr 中使用中文。
        解决 int 类型转换为 QString 类型 的问题:
        使用 QString("float:%1,int:%2/n").arg(f).arg(i) 用法。这里只是将 123 转换成 QString("123")。具体细节请参考博客:http://blog.chinaunix.net/u2/61322/showart_1205349.html 。
        解决 Qt 中批量打开指定类型的文件 问题:
        可以使用 QFileDialog 的 getOpenFileNames 静态方法。具体用法请参阅 Qt Assistant。
        所有源代码如下:
        main.cpp 主程序源码:
#include <QtGui/QApplication> #include <QTextCodec> #include "mainwindow.h" int main(int argc, char *argv[]) { QApplication a(argc, argv); /************************解决中文乱码问题源代码**********************/ QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8")); QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8")); /*****************************************************************/ MainWindow w; w.show(); return a.exec(); }
        mainwindow.cpp 主窗口头文件源码:
#ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QtGui/QMainWindow> #include <QLabel> class QAction; class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(QWidget *parent = 0); ~MainWindow(); private slots: void open(); private: QAction *openAction; QLabel *msgLabel; }; #endif // MAINWINDOW_H
        mainwindow.cpp 主窗口源码:
#include <QtGui/QAction> #include <QtGui/QMenu> #include <QtGui/QMenuBar> #include <QtGui/QKeySequence> #include <QtGui/QToolBar> #include <QMessageBox> #include <QStatusBar> #include <QFileDialog> #include <QStringList> #include "mainwindow.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) { openAction = new QAction(tr("&Open"),this); openAction->setShortcut(QKeySequence::Open); openAction->setStatusTip(tr("&Open a file.")); openAction->setIcon(QIcon(":/zhandian.png")); connect(openAction,SIGNAL(triggered()),this,SLOT(open())); QMenu *file = menuBar()->addMenu(tr("&File")); file->addAction(openAction); QToolBar *toolBar = addToolBar(tr("&File")); toolBar->addAction(openAction); msgLabel = new QLabel; msgLabel->setMinimumSize(msgLabel->sizeHint()); msgLabel->setAlignment(Qt::AlignHCenter); statusBar()->addWidget(msgLabel); } void MainWindow::open() { /**************************************解决批量打开指定类型文件问题的源码*******************************************/ QStringList files = QFileDialog::getOpenFileNames(this,tr("请选择图片"),"/home",tr("Image Files(*.jpg *.png)")); /**************************************指定文件类型之间以空格分割**************************************************/ if(files.length() == 0) { QMessageBox::information(NULL,tr("Path"),tr("您没有选中任何文件!")); }else{ /**********************************解决int型转换QString型问题源代码******************************************/ QMessageBox::information(NULL,tr("Path"),tr("您选中了") + QString("%1").arg(files.length()) + tr("个文件!")); /*********************************************************************************************************/ } } MainWindow::~MainWindow() { }

你可能感兴趣的:(image,File,null,qt,Path,Signal)