Главная страница
Программа просмотра графических файлов.
Программная платформа Windows XP SP3. Язык С++.
Библиотека Qt 3.3.8 (неофициальная версия для Windows,
свободно есть в интернете). Приложение с графическим интерфейсом.
Программа состоит из трех файлов с кодом viewimage1.cpp, viewimage1.h, main.cpp и
графического файла pri1.jpg, который является заставкой после запуска программы.
Файл pri1.jpg следует записать в папку "images",
ниже размещен этот файл для сохранения (горное озеро):
Программная платформа Win32 - это один из вариантов.
Библиотека Qt 3.3.8 работает на дистрибутивах Linux
(Ubuntu, Debian, Fedora и других).
Файл "viewimage1.cpp"
#include <qwidget.h>
#include <qlabel.h>
#include <qpushbutton.h>
#include <qstring.h>
#include <qtimer.h>
#include <qfiledialog.h>
#include <qdir.h>
#include <qptrlist.h>
#include "viewimage1.h"
bool slide;
QString foto="pri1.jpg";
QMyWidget::QMyWidget():QWidget(0, 0, 0)
{
setCaption("Программа просмотра изображений");
setGeometry(0,30,1000,720);
lab1=new QLabel(this,"label1",0);
lab1->setGeometry(0,0,1000,660);
lab1->setPixmap( QPixmap::fromMimeSource( foto ) );
QPushButton *pb1= new QPushButton("Вперед",this,"pushb1");
pb1->setGeometry(760,670,90,20);
QObject::connect(pb1,SIGNAL(clicked()),this,SLOT(vperiod()));
QPushButton *pb2= new QPushButton("Назад",this,"pushb2");
pb2->setGeometry(760,690,90,20);
QObject::connect(pb2,SIGNAL(clicked()),this,SLOT(nazad()));
QPushButton *pb3= new QPushButton("Выход",this,"pushb3");
pb3->setGeometry(860,680,90,30);
QObject::connect(pb3,SIGNAL(clicked()),this,SLOT(close()));
QPushButton *pb4= new QPushButton("Слайд вперед",this,"pushb4");
pb4->setGeometry(540,670,100,20);
QObject::connect(pb4,SIGNAL(clicked()),this,SLOT(slideTRUE()));
QObject::connect(pb4,SIGNAL(clicked()),this,SLOT(sliderfor()));
QPushButton *pb5= new QPushButton("Слайд назад",this,"pushb5");
pb5->setGeometry(540,690,100,20);
QObject::connect(pb5,SIGNAL(clicked()),this,SLOT(slideTRUE()));
QObject::connect(pb5,SIGNAL(clicked()),this,SLOT(sliderback()));
QPushButton *pb6= new QPushButton("Слайд стоп",this,"pushb6");
pb6->setGeometry(650,680,100,30);
QObject::connect(pb6,SIGNAL(clicked()),this,SLOT(sliderstop()));
QPushButton *pb7= new QPushButton("Открыть,this,"pushb7");
pb7->setGeometry(450,680,80,30);
QObject::connect(pb7,SIGNAL(clicked()),this,SLOT(viborfaila()));
lab2=new QLabel(this,"label2",0);
lab2->setGeometry(10,670,400,20);
lab3=new QLabel(this,"label3",0);
lab3->setGeometry(10,690,330,20);
lab3->setText(foto);
timer1 = new QTimer( 0 );
connect( timer1, SIGNAL(timeout()), this, SLOT(vperiodsl()) );
timer2= new QTimer( 0 );
connect( timer2, SIGNAL(timeout()), this, SLOT(nazadsl()) );
}
void QMyWidget::vperiod()
{ ++it;
lab3->setText(*it);
lab1->setPixmap( QPixmap::fromMimeSource(dp+"/"+*it ) );
}
void QMyWidget::nazad()
{ --it;
lab3->setText(*it);
lab1->setPixmap( QPixmap::fromMimeSource(dp+"/"+*it ) );
}
void QMyWidget::sliderfor()
{ timer1->start( 2000, TRUE ); // 2 seconds single-shot timer
}
void QMyWidget::vperiodsl()
{ if(slide){
++it;
lab1->setPixmap( QPixmap::fromMimeSource(dp+"/"+*it) );
lab3->setText(*it);
sliderfor();}
}
void QMyWidget::sliderback()
{
timer2->start( 2000, TRUE ); // 2 seconds single-shot timer
}
void QMyWidget::nazadsl()
{ if(slide){
--it;
lab1->setPixmap( QPixmap::fromMimeSource( dp+"/"+*it ) );
lab3->setText(*it);
sliderback();}
}
void QMyWidget::sliderstop()
{
slide=FALSE;
}
void QMyWidget::slideTRUE()
{
slide=TRUE;
}
void QMyWidget::viborfaila()
{
QFileDialog *fd=new QFileDialog(0,0,TRUE);
fd->setGeometry(0,0,500,500);
fd->setCaption("Выберите графический файл");
fd->exec();
QString filename=fd->selectedFile();
dp=fd->dirPath();
lab1->setPixmap( QPixmap::fromMimeSource(filename ) );
lab2->setText(dp);
dir1=new QDir(dp);
sl1=dir1->entryList(QDir::Files | QDir::NoSymLinks);
it=sl1.begin();
lab3->setText(*it);
}
Файл "viewimage1.h"
#ifndef QVIEWIMAGE1_H
#define QVIEWIMAGE1_H
#include <qwidget.h>
#include <qlabel.h>
#include <qstring.h>
#include <qdir.h>
#include <qstringlist.h>
class QMyWidget : public QWidget
{
Q_OBJECT
public:
QMyWidget();
public slots:
void vperiod();
void nazad();
void sliderfor();
void vperiodsl();
void sliderback();
void nazadsl();
void sliderstop();
void slideTRUE();
void viborfaila();
public:
QLabel *lab1;
QLabel *lab2;
QLabel *lab3;
QTimer *timer1;
QTimer *timer2;
QStringList list1;
QDir *dir1;
QString dp;
QStringList sl1;
QStringList::Iterator it;
};
#endif
Файл "main.cpp"
#include <qapplication.h>
#include "viewimage1.h"
int main(int argc,char*argv[])
{
QApplication appl(argc,argv);
QMyWidget *wid1=new QMyWidget();
appl.connect( &appl, SIGNAL(lastWindowClosed()), &appl, SLOT(quit()) );
appl.setMainWidget(wid1);
wid1->show();
return appl.exec();
}
Главная страница