|
1Qter豆
QScrollArea中的图片总是那么大小的 。我已经加了图片放大放小功能。图片到时能放大放小,;但是就是在那么大的 区域内一直放大放小呢。
#include "widget.h"#include "ui_widget.h"
int w,h;
Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget){ ui->setupUi(this); scrollArea = new QScrollArea(this); scrollArea->setBackgroundRole(QPalette::Dark); scrollArea->setAlignment(Qt::AlignCenter); label = new QLabel(this); scrollArea->setWidget(label); imageNumber = new QLabel(this); open = new QPushButton(tr("打开"),this); start = new QPushButton(tr("播放"),this); stop = new QPushButton(tr("停止"),this); previous = new QPushButton(tr("上一张"),this); next = new QPushButton(tr("下一张"),this);
start -> setEnabled(false); stop -> setEnabled(false); previous -> setEnabled(false); next -> setEnabled(false);
big = new QPushButton(tr("放大"),this); little = new QPushButton(tr("缩小"),this); nromal = new QPushButton(tr("原图"),this); recover = new QPushButton(tr("恢复"),this); cycle = new QPushButton(tr("旋转"),this);
big -> setEnabled(false); little -> setEnabled(false); nromal -> setEnabled(false); recover -> setEnabled(false); cycle -> setEnabled(false);
QHBoxLayout *mainLayout = new QHBoxLayout(this); QVBoxLayout *leftLayout = new QVBoxLayout(this); QVBoxLayout *centerLayout = new QVBoxLayout(this); QVBoxLayout *rightLayout = new QVBoxLayout(this);
leftLayout -> addWidget(big); leftLayout -> addWidget(little); leftLayout -> addWidget(nromal); leftLayout -> addWidget(recover); leftLayout -> addWidget(cycle);
centerLayout -> addWidget(scrollArea); centerLayout -> addWidget(imageNumber);
rightLayout -> addWidget(open); rightLayout -> addWidget(start); rightLayout -> addWidget(stop); rightLayout -> addWidget(previous); rightLayout -> addWidget(next);
mainLayout -> addLayout(leftLayout); mainLayout -> addLayout(centerLayout); mainLayout -> addLayout(rightLayout);
setLayout(mainLayout);
connect(open,SIGNAL(clicked()),this,SLOT(openSlot())); connect(start,SIGNAL(clicked()),this,SLOT(startSlot())); connect(stop,SIGNAL(clicked()),this,SLOT(stopSlot())); connect(previous,SIGNAL(clicked()),this,SLOT(previousSlot())); connect(next,SIGNAL(clicked()),this,SLOT(nextSlot()));
connect(big,SIGNAL(clicked()),this,SLOT(bigSlot())); connect(little,SIGNAL(clicked()),this,SLOT(littleSlot())); connect(nromal,SIGNAL(clicked()),this,SLOT(nromalSlot())); connect(recover,SIGNAL(clicked()),this,SLOT(recoverSlot())); connect(cycle,SIGNAL(clicked()),this,SLOT(cycleSlot()));
setWindowTitle(tr("图片")); setWindowIcon(QIcon(":/image/notepad.ico"));}
void Widget::openSlot(){ QStringList list = QFileDialog::getOpenFileNames(this,tr("打开"),QDir::currentPath(),"image (*.png *jpg)"); int k = 0; for(QStringList::Iterator it = list.begin();it != list.end();it++){ imageList[k = *it; k++; } image_sum = QString::number(k); image_postion = QString::number(1); imageNumber -> setText(tr("%1 / %2").arg(image_postion).arg(image_sum)); start -> setEnabled(true); stop -> setEnabled(true); previous -> setEnabled(true); next -> setEnabled(true); big -> setEnabled(true); little -> setEnabled(true); nromal -> setEnabled(true); recover -> setEnabled(true); cycle -> setEnabled(true); pixMap . load(imageList[0]); pixMap = pixMap.scaled(100,100,Qt::IgnoreAspectRatio); label->setPixmap(pixMap);}
void Widget::startSlot(){
}
void Widget::stopSlot(){
}
void Widget::previousSlot(){
}
void Widget::nextSlot(){
}
void Widget::bigSlot(){ pixMap.load(imageList[0]); w *= 1.2; h *= 1.2; pixMap = pixMap.scaled(w,h);//设置图片的大小和label的大小相同,注意:IgnoreAspectRatio很重要, label->setPixmap(pixMap);}
void Widget::littleSlot(){ pixMap.load(imageList[0]); w /= 1.2; h /= 1.2; pixMap = pixMap.scaled(w,h);//设置图片的大小和label的大小相同,注意:IgnoreAspectRatio很重要, label->setPixmap(pixMap);}
void Widget::nromalSlot(){ pixMap.load(imageList[0]); label->setPixmap(pixMap);}
void Widget::recoverSlot(){
}
void Widget::cycleSlot(){
}
Widget::~Widget(){ delete ui;}这个是主要源码。功能还没后实现完呢,就在这里卡住了
|
|