QT如何使用scrollarea和Label(或者TextEdit)显示很多的内容

QT如何使用scrollarea和Label(或者TextEdit)显示很多的内容,第1张

会调用scrollarea窗口显示图片,窗口大小能根据图片大小自动调整,但是最大为1024*768,图片过大就要有滚动条来显示

mainwindow中点击“显示图片”调用scrollarea窗口,下面的函数是被一个按钮的槽函数调用的

void MainWindow::Show_Image_byname(char *filename)

{

if(!filename || !strlen(filename))

{

return

}

char buf[128]= {0}

strcpy(buf,SAVE_IMAGE)

strcat(buf,filename)

ScrollArea *new_image = new ScrollArea()

new_image->set_image(buf)

new_image->setBackgroundRole(QPalette::Dark)

new_image->show()

return

}

添加文件scrollarea.ui文件,画出一个scrollarea

在生成的scrollarea.h中添加私有成员QLabel

private:

Ui::ScrollArea *ui

QLabel *label

在析构函数中添加内存释放

ScrollArea::~ScrollArea()

{

delete ui

if(label)

{

delete label

}

}

在生成的scrollarea.cpp中添加图片显示实现函数

void ScrollArea::set_image(char *filename)

{

QImage *ppm = new QImage(filename)

label = new QLabel()

printf("ppm->width()=%d, ppm->height()=%d\n",ppm->width(), ppm->height())//获取图片的宽度和高度

label->setPixmap(QPixmap::fromImage(*ppm))

this->setWidget(label)

/*设置窗口最大高度和宽度为1024*768*/

this->setMaximumHeight(768)

this->setMaximumWidth(1024)

this->resize(QSize( ppm->width()+5, ppm->height() +5))

return

}

    QScrollArea *pArea= new QScrollArea(this)

    QWidget * qw = new QWidget(pArea)//需要滚动的是一个Qwidget,而如果是在设计器里面拖入控件,会自动添加一个

    QPushButton * pb = new QPushButton(qw)//测试用,实际你使用就是把按钮设置父窗口,放进qw

    pb->setText("1235647")

    pb->move(130,50)

    pArea->setWidget(qw)//这里设置滚动窗口qw,

    pArea->setGeometry(0,0,200,200)//要显示的区域大小

    qw->setGeometry(0,0,300,300)//这里变大后,看出他实际滚动的是里面的QWidget窗口

首先添加QScrollArea,在这个里面加QWidget,然后添加你的小部件并布局,在设置部件关联。类似这个代码吧:

QScrollArea *pArea= new QScrollArea(this)

QWidget * qw = new QWidget(pArea)//需要滚动的是一个Qwidget,而如果是在设计器里面拖入控件,会自动添加一个

QPushButton * pb = new QPushButton(qw)

pb->setText("1235647")

pb->move(130,50)

pArea->setWidget(qw)//这里设置滚动窗口


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11511220.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存