今天继续学习《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()指定
代码很简单,但是运行出来:
无法显示完整图像。
虽然知道解决这个应该不难,但是还是花了不少时间,因为你会去找其他的方法,然后又遇到问题。。。
比如看到一个说可以重新构建一个窗体,让它的父窗体为滚动区域: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布局