我把程式碼印出來好嚕~~有四個檔案
其中主視窗mainwindow.cpp,及mainwindow.h,imagewidget.cpp,imagewidget.h,main.cpp
mainwindow.h是宣告類別的,imagewidget是把開啟來的東西放在螢幕上得
先放mainwindow.cpp~~因為覺得最有可能出現問題
#include <QtGui>
#include "mainwindow.h"
MainWindow::MainWindow()
{
imageWidget=new ImageWidget;
scrollArea=new QScrollArea;
scrollArea->setBackgroundRole(QPalette::Dark);
imageWidget->setSizePolicy(QSizePolicy::Ignored,QSizePolicy::Ignored);
scrollArea->setWidget(imageWidget);
scrollArea->widget()->setMinimumSize(320,240);
setCentralWidget(scrollArea);
createActions();
createMenus();
createToolBars();
setWindowTitle(tr("zeki"));
setFocusPolicy(Qt::StrongFocus);
index=0;
imageDir.setPath("/windows/E/Wife/USA photo/5.3");
QStringList filter;
filter << "*.jpg" << "*.bmp"<< "*.jpeg" << "*.png" << "*.xpm";
imageList=imageDir.entryList(filter,QDir::Files);
next();
}
void MainWindow::resizeEvent(QResizeEvent *event)
{
QRect clildRect=scrollArea->childrenRect();
imageWidget->resize(clildRect.size());
}
void MainWindow::createActions()
{
dirAct=new QAction(QIcon(":/image/open.png"),tr("open"),this);
dirAct->setShortcut(QKeySequence::Open);
connect(dirAct,SIGNAL(triggered()),this,SLOT(selectDir()));
prevAct=new QAction(QIcon(":/image/left.png"),tr("Previous"),this);
prevAct->setShortcut(QKeySequence::Back);
connect(prevAct,SIGNAL(triggered()),this,SLOT(prev()));
nextAct=new QAction(QIcon(":/image/right.png"),tr("Next"),this);
dirAct->setShortcut(QKeySequence::Forward);
connect(nextAct,SIGNAL(triggered()),this,SLOT(next()));
leftAct=new QAction(QIcon(":/image/undo.png"),tr("Left"),this);
leftAct->setShortcut(tr("Ctrl+L"));
connect(leftAct,SIGNAL(triggered()),this,SLOT(rotateLeft()));
rightAct=new QAction(QIcon(":/image/redo.png"),tr("Right"),this);
rightAct->setShortcut(tr("Ctrl+R"));
connect(rightAct,SIGNAL(triggered()),this,SLOT(rotateRight()));
zoomInAct=new QAction(QIcon(":/image/zoomin.png"),tr("ZoomIn"),this);
zoomInAct->setShortcut(QKeySequence::ZoomIn);
connect(zoomInAct,SIGNAL(triggered()),this,SLOT(zoomIn()));
zoomOutAct=new QAction(QIcon(":/image/zoomout.png"),tr("ZoomOut"),this);
zoomOutAct->setShortcut(QKeySequence::ZoomOut);
connect(dirAct,SIGNAL(triggered()),this,SLOT(zoomOut()));
}
void MainWindow::createMenus()
{
naviMenu=menuBar()->addMenu(tr("Navigation"));
naviMenu->addAction(prevAct);
naviMenu->addAction(nextAct);
operMenu=menuBar()->addMenu(tr("Operation"));
operMenu->addAction(leftAct);
operMenu->addAction(rightAct);
operMenu->addAction(zoomInAct);
operMenu->addAction(zoomOutAct);
}
void MainWindow::createToolBars()
{
naviToolBar=addToolBar(tr("Navigation"));
naviToolBar->addAction(dirAct);
naviToolBar->addSeparator();
naviToolBar->addAction(prevAct);
naviToolBar->addAction(nextAct);
operToolBar=addToolBar(tr("Operation"));
operToolBar->addAction(leftAct);
operToolBar->addAction(rightAct);
operToolBar->addAction(zoomInAct);
operToolBar->addAction(zoomOutAct);
}
void MainWindow::createStatusBar()
{
statusBar()->showMessage(tr("Ready"));
}
//瀏覽目錄
void MainWindow::selectDir()
{
QString dir=QFileDialog::getExistingDirectory(this,tr("Open Directory"),QDir::currentPath(),QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks);
if(dir.isEmpty())
return;
imageDir.setPath(dir);
QStringList filter;
filter << "*.jpg" << "*.bmp" << "*.jpeg" << "*.png" << "*.xpm";
imageList=imageDir.entryList(filter,QDir::Files);
next();
}
//下一張圖像
void MainWindow::next()
{
if(index<imageList.size())
{
imageWidget->setPixmap(imageDir.absolutePath()+QDir::separator()+imageList.at(index));
statusBar()->showMessage(imageList.at(index));
index++;
}
}
//前一張圖像
void MainWindow::prev()
{
if(index>0)
{
imageWidget->setPixmap(imageDir.absolutePath()+QDir::separator()+imageList.at(index));
statusBar()->showMessage(imageList.at(index));
index--;
}
}
//左轉九十度
void MainWindow::rotateLeft()
{
imageWidget->setAngle(-90);
}
//右轉久十度
void MainWindow::rotateRight()
{
imageWidget->setAngle(90);
}
//放大圖像
void MainWindow::zoomIn()
{
imageWidget->scale *=1.25;
zoomInAct->setEnabled(imageWidget->scale<3);
zoomOutAct->setEnabled(imageWidget->scale>0.333);
imageWidget->resize(imageWidget->scale * scrollArea->size());
}
//縮小圖像
void MainWindow::zoomOut()
{
imageWidget->scale *=0.8;
zoomInAct->setEnabled(imageWidget->scale<3);
imageWidget->resize(imageWidget->scale * scrollArea->size());
}