歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Qt 簡易電子相冊

Qt開發軟件下開發:

主函數

#include <QtGui/QApplication>
#include "icon.h"
#include<QTextCodec>
#include<QFont>
#include<QColor>int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Icon w;
    QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));//國際標准字體
    QTextCodec::setCodecForLocale(QTextCodec::codecForName("GBK"));
    QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GBK"));
    w.setEnabled(false);
    w.setDisabled(false);
    w.setFixedSize( w.width (),w.height ());


    w.show();//全屏顯示w.shouFullScreen();
    QFont f("wenquanyi",12);
    a.setFont(f);
    QColor q(255,0,0);
    q.setRed(255);
    return a.exec();
}
頭文件:

#ifndef ICON_H
#define ICON_H
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
namespace Ui {
    class Icon;
}

class Icon : public QMainWindow
{
    Q_OBJECT

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

private:
    Ui::Icon *ui;
    QTimer *timer;
    QPixmap pix;
    QLabel *label,*label1;


private slots:

    void on_pushButton_3_clicked();
    void on_left_clicked();
    void on_pushButton_clicked();
    void on_small_clicked();
    void on_big_clicked();
    void on_down_clicked();
    void on_up_clicked();
    void on_stop_clicked();
    void on_start_clicked();
    void imageshow();


};

#endif // ICON_H
cpp文件:

#include "icon.h"
#include "ui_icon.h"
#include
int i=0,j=0;
QString imagelist[100];//定義長度為一百的數組用來存放打開的圖片,在linux中暫時只能顯示png格式的圖片
//QString image[5]={":/2.png",":/3.png",":/4.png",":/5.png",":/7.png"};
QStringList::iterator it;//迭代器
Icon::Icon(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::Icon)
{
    ui->setupUi(this);
    label=new QLabel;
//    label1=new QLabel(tr("電子相冊"),this );
//    函數explicit QLabel(const QString &text, QWidget *parent=0, Qt::WindowFlags f=0);
//    label1->setGeometry(140,200,120,40);
/*****************************************添加背景圖片************************************/
 QImage image1;
    image1.load(":/8.png");    //括號內為圖片的相對目錄
    QImage image2 = image1.scaled(320,240);
    QPalette palette;
    palette.setBrush(this->backgroundRole(),QBrush(image2));
    this->setPalette(palette);
/****************************************將滾動條添加到label上************************************/
    //ui->label->setAlignment(Q);
    ui->scrollArea->setWidget(label);
    ui->scrollArea->setAlignment(Qt::AlignHCenter);
    timer=new QTimer();
/*****************************************信號與槽************************************/
    connect(timer,SIGNAL(timeout()),SLOT(imageshow()));

}

Icon::~Icon()
{
    delete ui;
}
/*****************************************開始播放圖片************************************/
void Icon::on_start_clicked()
{
   timer->start(1000);//每隔一秒開始顯示一張圖片
   ui->shuzi->setNum(++i);//在Label上顯示已經顯示的圖片的個數
}
/*****************************************停止播放圖片************************************/
void Icon::on_stop_clicked()
{
timer->stop();
}
/*****************************************自動顯示圖片************************************/
void Icon::imageshow()
{
 pix.load(imagelist[i]);//先下載圖片
 pix=pix.scaled(label->width(),label->height(),Qt::KeepAspectRatio);//設置顯示圖片的大小和label的大小一致
label->setPixmap(pix);//將圖片顯示在面板上
 ui->shuzi->setNum(i);
i++;
if(i>j)
    i=0;
}
/*****************************************顯示上一張圖片************************************/
void Icon::on_up_clicked()
{
    i=i+1;
    if(i>j)
        i=0;
    pix.load(imagelist[i]);
    label->setPixmap(pix);
     ui->shuzi->setNum(i);
         timer->stop();

}
/*****************************************顯示下一張圖片************************************/
void Icon::on_down_clicked()
{
    i=i-1;
    if(i<0)
        i=j;
    pix.load(imagelist[i]);
    label->setPixmap(pix);
     ui->shuzi->setNum(i);
     timer->stop();
   // i=i-1;

}
/*****************************************放大圖片************************************/
void Icon::on_big_clicked()
{
    timer->stop();
    double w=pix.width();//定義兩個double對象分別獲取圖片的寬和高
    double h=pix.height();
    pix=pix.scaled(w*1.2,h*1.2,Qt::KeepAspectRatio);//將圖片擴大至原來的1.2倍
    label->setPixmap(pix);
}
/*****************************************縮小圖片************************************/
void Icon::on_small_clicked()
{
    timer->stop();
    double h=pix.height();
    double w=pix.width();
    pix=pix.scaled(w*0.8,h*0.8,Qt::KeepAspectRatio);
    label->setPixmap(pix);
}
/*****************************************打開文件************************************/
void Icon::on_pushButton_clicked()
{
       int k=0;
       QStringList list=QFileDialog::getOpenFileNames(this,"Select file","/","*.*");//1在當前窗口上打開文件,2窗口的名字,選擇文件的路徑,文件類型
      for(it=list.begin();it     {
         imagelist[k]=*it;
         qDebug()<         k++;
     }
       j=k-1;
//       pix.load(imagelist[j]);
//       label->setPixmap(pix);
       if(j<0)
           j=0;
       ui->zongshu->setNum(j);

}


/*****************************************向左旋轉************************************/

void Icon::on_left_clicked()
{
    timer->stop();
    QMatrix matrix;
    matrix.rotate(90);/*向左旋轉,先將圖片暫停下來,先用QMatrix類定義一個對象,對象調用旋轉函數*/
    pix=pix.transformed( matrix,Qt::FastTransformation);
    label->setPixmap(pix);
}
/*****************************************向右旋轉************************************/
void Icon::on_pushButton_3_clicked()
{
    timer->stop();
    QMatrix matrix;/*向右旋轉,先將圖片暫停下來,先用QMatrix類定義一個對象,對象調用旋轉函數*/
    matrix.rotate(-90);
    pix=pix.transformed( matrix,Qt::FastTransformation);
    label->setPixmap(pix);
}

Copyright © Linux教程網 All Rights Reserved