Esempio n. 1
0
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    ui->listView->setGridSize(QSize(cGridSize, cGridSize));
    ui->listView->setIconSize(QSize(cIconSize, cIconSize));

    QList<thumb> *testList = new QList<thumb>(/*createList()*/);

    model = new ImagesModel(testList, this);

    ui->listView->setModel(model);

    mProgressBar = new QProgressBar();
    mProgressBar->setMinimum(0);
    mProgressBar->setValue(0);
    mProgressBar->setVisible(false);

    ui->statusBar->addPermanentWidget(mProgressBar);

    qRegisterMetaType<thumb>("thumb");
    connect(&mThread, SIGNAL(sendThumb(thumb)), this, SLOT(addItem(thumb)));
    connect(&mThread, SIGNAL(maxFilesCountEvaluated(int)), mProgressBar, SLOT(setMaximum(int)));
    connect(&mThread, SIGNAL(scanFinished()), mProgressBar, SLOT(hide()));

    mThread.compute("/home/luxa/Pictures/Photos");
}
imgWidgetDisplayBigView::imgWidgetDisplayBigView(QWidget *parent = 0):QGraphicsView(parent)
{
    this->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
    this->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
    this->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
    this->setStyleSheet("background:transparent;border:0px");

    sameimgFlag = 0;
    scaleFlag = 0;
    currentfile = "";
    item = new imgWidgetDisplayBigItem;
    reciItem = new QGraphicsPixmapItem;
    this->setScene(&scene);
    item->setFlags(QGraphicsPixmapItem::ItemIsMovable);
    scene.addItem(item);
    scene.setSceneRect(0,0,800,600);
    this->show();
    thread = new imgWidgetDisplayThread;
    connect(thread,SIGNAL(sendThumb(QImage,QString)),this,SLOT(receiveFormThread(QImage,QString)));
    timer = new QTimer(this);
    connect(timer, SIGNAL(timeout()), this, SLOT(startThread()));
    timer->setSingleShot(true);
    keepSameTimer = new QTimer(this);
    connect(keepSameTimer, SIGNAL(timeout()), this, SLOT(startThread()));
    keepSameTimer->setSingleShot(true);
}
void imgwidgetThumbThread::setimg(int i){

    float multiple = 0;//倍数
    QImage img;
    Image imgFlag72;
    imgFlag72.load("../bkbig.png");
    double tim = static_cast<double>(getTickCount());
    QImageReader * imgread = new QImageReader(allImgs.at(i).absoluteFilePath());
    tim = ((double)getTickCount()- tim)/getTickFrequency();
    //qDebug()<<"tim----------------"<<tim;
    if(!imgread->canRead()){
       imgread->setFileName("../picture_error.png");
    }
    QSize size = imgread->size();
    multiple = (imgread->size().width()/72.0>imgread->size().height()/48.0
                ?imgread->size().width()/72.0:imgread->size().height()/48.0);
    if(multiple>0)
        imgread->setScaledSize(imgread->size()/multiple);
     int x = (72-imgread->scaledSize().width())/2.0;
     int y = (48-imgread->scaledSize().height())/2.0;

    if(imgread->read(&img))
    {
        imgFlag72.painter(img,x,y,72,48);
        double tim = static_cast<double>(getTickCount());
        //imgFlag36 = imgFlag72.copy(18,0,36,48);
//        tim = ((double)getTickCount()- tim)/getTickFrequency();
//        qDebug()<<"tim----------------"<<tim<<i<<selectedNum;
        emit sendThumb(imgFlag72,img,size,i);
    }
}