分别从A和B里读一幅图A1和B1,把A1和B1一左一右同时显示在软件界面上,但位置随机(50%在左,50%在右)
1.QDir类用来操作路径名及底层文件系统,获取关于目录路径及文件的相关信息。
获取当前路径文件下所有图片目录列表
头文件:`
private:
Ui::DisplayInterface *ui;
QDir dirA,dirB;
QString dirAPath,dirBPath; //图片所在文件夹
int total_image_count=0; //图片组数
`源文件
void DisplayInterface::Show_DisplayInterface_Page(const QString& pathA,const QString& pathB)
{
//记录从上一界面传来的路径
dirAPath=pathA;
dirBPath=pathB;
dirA.setPath(pathA);
dirB.setPath(pathB);
QStringList ImageList;
ImageList << "*.bmp" << "*.jpg" << "*.png";
dirA.setNameFilters(ImageList);
dirB.setNameFilters(ImageList);
total_image_count=dirA.count(); //一共有多少组图片
show_next_image(dirAPath,dirBPath);
this->show();
}
另外与前界面信号连接应设置
在getpath.h设置信号
signals:
void show_DisplayInterface_page(const QString&,const QString&);
在displayinterface.h设置槽
private slots:
void Show_DisplayInterface_Page(const QString&,const QString&);
在main.c中连接
QObject::connect(&getPath,SIGNAL(show_DisplayInterface_page(const QString&,const QString&)),
&displayInterface,SLOT(Show_DisplayInterface_Page(const QString&,const QString&)));
2.设置随机数种子,得到0-1的随机数,若得到的随机数是0放在左边,得到的随机数是1放在右边。
int DisplayInterface::getRandomNumber()
{
qsrand(QTime(0,0,0).secsTo(QTime::currentTime()));//随机数种子,不能放在循环里,否则容易出现很多相同随机数
return (qrand()%2);//产生随机数0-1
}
void DisplayInterface::show_next_image(const QString& dirAPath,const QString& dirBPath)
{
//存放每张图片的路径
QString ImageAPath=dirAPath+"/"+dirA[current_img_index];
QString ImageBPath=dirBPath+"/"+dirB[current_img_index];
//每运行一次图片序号+1
++current_img_index;
qDebug()<<"curIndex:"<<current_img_index<<endl;
QImage imageA(ImageAPath);
QImage imageB(ImageBPath);
//设置图片等比缩放
imageA=imageA.scaled(500, 500);
imageB=imageB.scaled(500, 500);
//获取随机数
randomNumber=getRandomNumber();
qDebug()<<"随机数为:"<<randomNumber<<endl;
if(randomNumber==0){
//A图放postion0
ui->position0->setPixmap(QPixmap::fromImage(imageA));
ui->position1->setPixmap(QPixmap::fromImage(imageB));
}
else{
//A图放position1
ui->position1->setPixmap(QPixmap::fromImage(imageA));
ui->position0->setPixmap(QPixmap::fromImage(imageB));
}
}