Qt实现图像滚动视图

今天继续学习《Qt实战一二三》@博主一去丶二三里

 

Qt 之 QScrollArea源自:https://blog.csdn.net/liang19890820/article/details/52402002#commentsedit

在实现第一个效果:对一个图像实现区域滚动

QLabel *imageLabel = new QLabel(this);   
imageLabel->setPixmap(QPixmap(":/logo.jpg"));
QScrollArea *scrollArea = new QScrollArea(this);     
scrollArea->setWidget(imageLabel);//子部件必须使用setWidget()指定

代码很简单,但是运行出来:

Qt实现图像滚动视图_第1张图片

无法显示完整图像。

虽然知道解决这个应该不难,但是还是花了不少时间,因为你会去找其他的方法,然后又遇到问题。。。

比如看到一个说可以重新构建一个窗体,让它的父窗体为滚动区域:https://blog.csdn.net/u012319493/article/details/52155284

结果是滚动条可以完全显示,图像没有,以此引发下列问题

error: 'class QScrollArea' has no member named 'setPixmap'
     scrollArea->setPixmap(QPixmap(":/logo.jpg"));
  解决办法:

QLabel *imageLabel = new QLabel(this);
imageLabel->setPixmap(QPixmap(":/logo.jpg"));

用imagelLable 就没有报错,说明“setPixmap'”是class QLabel 中的成员。

最后还是找到了解决办法,加上这行代码:

scrollArea->setGeometry(0,0,300,200); // 从屏幕上(0,0)位置开始(即为最左上角的点),显示一个300*200的界面(宽300,高200)

就是这个函数 setGeometry。不再需要用其他Layout布局

Qt实现图像滚动视图_第2张图片

 

 

 

       

你可能感兴趣的:(Qt)