1. 程式人生 > >用QT製作圖片轉換成ICO格式 領卓教育

用QT製作圖片轉換成ICO格式 領卓教育

標頭檔案      UI頁面自己設計自己的頁面,槽函式改下就可以

#include "app.h"
#include "ui_app.h"
#include <QDebug>
#include <QImageReader>
#include <QImageWriter>
#include <QFileDialog>

app::app(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::app)
{
    ui->setupUi(this);
    ui->radioButton_32->setChecked(true);
    this->setWindowIcon(QIcon(":/icons/png-0002.png"));//製作程式的圖示,自己找個喜歡的圖片
    this->setWindowTitle("圖片轉ICO工具");
}

app::~app()
{
    delete ui;
}

void app::on_pushButton_select_clicked()
{
    qDebug()<<"支援讀取的檔案型別"<<QImageReader::supportedImageFormats();
    qDebug()<<"支援儲存的檔案型別"<<QImageWriter::supportedImageFormats();
    src_filename = QFileDialog::getOpenFileName(this,tr("開啟檔案"));
    QFileInfo fi(src_filename);
    QString name =fi.fileName();
    ui->label_filename->setText(name);
}

void app::on_pushButton_suc_clicked()
{
    dst_filename = QFileDialog::getSaveFileName(this,tr("儲存為"),tr("./"),tr("*.ico"));
    QImage img(src_filename);
    img.save(dst_filename,"ico");
    if(ui->radioButton_16->isChecked())
    {
        width = 16;
        height = 16;
    }
    else if(ui->radioButton_32->isChecked())
    {
        width = 32;
        height = 32;
    }
    else if(ui->radioButton_48->isChecked())
    {
        width = 48;
        height = 48;
    }
    else if(ui->radioButton_64->isChecked())
    {
        width = 64;
        height = 64;
    }
    else if(ui->radioButton_128->isChecked())
    {
        width = 128;
        height = 128;
    }
    qDebug()<<width<<"*"<<height;
    QImage newing = img.scaled(width,height);
    newing.save(dst_filename,"ico");
}

void app::on_pushButton_del_clicked()
{
    ui->label_filename->clear();
    ui->label_filename->setText(tr("未發現任何檔案"));
}

void app::on_pushButton_preview_clicked()
{
    QPixmap map(this->src_filename);
    if(ui->radioButton_16->isChecked())
    {
        width = 16;
        height = 16;
    }
    else if(ui->radioButton_32->isChecked())
    {
        width = 32;
        height = 32;
    }
    else if(ui->radioButton_48->isChecked())
    {
        width = 48;
        height = 48;
    }
    else if(ui->radioButton_64->isChecked())
    {
        width = 64;
        height = 64;
    }
    else if(ui->radioButton_128->isChecked())
    {
        width = 128;
        height = 128;
    }
    QPixmap newn = map.scaled(width,height);
    ui->label_pic1->setPixmap(newn);
}

主函式 

#ifndef APP_H
#define APP_H

#include <QWidget>

namespace Ui {
class app;
}

class app : public QWidget
{
    Q_OBJECT

public:
    explicit app(QWidget *parent = 0);
    ~app();

private slots:
    void on_pushButton_select_clicked();

    void on_pushButton_suc_clicked();

    void on_pushButton_del_clicked();

    void on_pushButton_preview_clicked();

private:
    Ui::app *ui;
    QString src_filename;
    QString dst_filename;
    int width,height;
};

#endif // APP_H