找回密码
 立即注册
收起左侧

有谁会用QScroolArea吗?

0
回复
8118
查看
[复制链接]
累计签到:7 天
连续签到:1 天
来源: 2016-12-8 14:57:39 显示全部楼层 |阅读模式
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;}这个是主要源码。功能还没后实现完呢,就在这里卡住了

附件: 您需要 登录 才可以下载或查看,没有帐号?立即注册
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了