• 5345阅读
  • 4回复

[提问]各位大大求助啊,我做了个图片浏览器,但是每次读到最后一张图就会自动退出,我设置了回溯函数的 [复制链接]

上一主题 下一主题
离线zscshark
 
只看楼主 倒序阅读 楼主  发表于: 2011-04-30
代码如下: mainwindow.h  
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>

namespace Ui {
    class MainWindow;
}
class MainWindow : public QMainWindow {
    Q_OBJECT
public:
    MainWindow(QWidget *parent = 0);
    ~MainWindow();
protected:
    void changeEvent(QEvent *e);
private:
    Ui::MainWindow *ui;
     QStringList files;
     int photonum;
    void loadFile();
    void showImage(int photonum);
    void isNumTrue(int i);
private slots:

private slots:
    void on_pButton_clicked();
    void on_pushButton_clicked();
};
#endif // MAINWINDOW_H

mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QFile>
#include<QDir>
#include<QDebug>
#include<QPalette>
#include<QPixmap>
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    loadFile();
    QString name;
    for(int i=0;i<files.length();i++)
    {
       name=files.at(i);
       qDebug()<<name<<"\n";
     }
    qDebug()<<files.length()<<"\n";
     photonum=2;
     showImage(photonum);
}
MainWindow::~MainWindow()
{
    delete ui;
}
void MainWindow::changeEvent(QEvent *e)
{
    QMainWindow::changeEvent(e);
    switch (e->type()) {
    case QEvent::LanguageChange:
        ui->retranslateUi(this);
        break;
    default:
        break;
    }
}

void MainWindow::loadFile()
{
    /*QDir dir = QDir::current();
    QString path=;*/
     QDir dir = QDir("./");
    //dir.setFilter(QDir::Files | QDir::Hidden | QDir::NoSymLinks);

  #if QT_VERSION >= 0x040000
    QFileInfoList list = dir.entryInfoList("*.jpg",QDir::AllEntries,QDir::DirsFirst);
    for (int i = 0; i < list.size(); ++i)
    {
      QFileInfo fileInfo = list.at(i);
      files.append(dir.absoluteFilePath(fileInfo.fileName()));
    }
  #else
    const QFileInfoList* list = dir.entryInfoList("*.jpg",QDir::AllEntries,QDir::DirsFirst);
    if(list)
    {
      QFileInfoListIterator it( *list );
      QFileInfo * fi;
      while( (fi=it.current()) != 0 )
      {
        ++it;
        files.append(dir.absFilePath(fi->fileName()));
      }
    }
  #endif
}
void MainWindow::isNumTrue(int i)
{
    if(i==files.length())
    {
        i=0;
    }
   else if(i<0)
    {
        i=files.length()-1;
    }
}
void MainWindow::showImage(int photonum)
{
       // isNumTrue(photonum);
        //ui->label_1->setPixmap(QPixmap(files.at(photonum-2)));
      //  isNumTrue(photonum);
        //ui->label_2->setPixmap(QPixmap(files.at(photonum-1)));
      //  isNumTrue(photonum);
        ui->label_3->setPixmap(QPixmap(files.at(photonum)));
     //   isNumTrue(photonum);
        //ui->label_4->setPixmap(QPixmap(files.at(photonum+1)));
      //  ui->label_5->setPixmap(QPixmap(files.at(photonum+2)));
}

void MainWindow::on_pushButton_clicked()
{
    ++photonum;
  /*  if(photonum==files.length())
    {
        photonum=0;
    }*/
     isNumTrue(photonum);
    qDebug()<<photonum<<"n"<<files.at(photonum)<<"\n";
    showImage(photonum);
}
void MainWindow::on_pButton_clicked()
{
    --photonum;
   /* if(photonum<0)
    {
        photonum=files.length()-1;
    }*/
     isNumTrue(photonum);
    qDebug()<<photonum<<"p"<<files.at(photonum)<<"\n";
    showImage(photonum);
}

各位大大帮忙看看问题出在哪?

离线XChinux

只看该作者 1楼 发表于: 2011-04-30
你用调试功能先定位一下,在哪里出现了问题,否则别人还得测试你的程序,就无法快速给你定位问题了。并没有多少人有那么多时间会这样给你诊断的。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线zscshark
只看该作者 2楼 发表于: 2011-05-01
我忘了,点击向前的按钮,photonum会一直加加到临界值,然后再点一下就退出,点击向后的按钮也是一样,photonum减到0后就不会回溯
离线wxj120bw

只看该作者 3楼 发表于: 2011-05-01
版主的意思  是想让你调式下程序 关注几个变量 photonum变量应该是剩下的未浏览图片数 在浏览的某个状态 关注几个变量的数字是不是正确
离线zscshark
只看该作者 4楼 发表于: 2011-05-01
我的文件里有八张图片,photonum是当前显示图片的编号,8张则photonum是0-7,每次改变photonum的值我都打印出来,当photonum变成7或者0的时候,在点击按钮改变photonum的值就自动退出
快速回复
限100 字节
 
上一个 下一个