文章目录
6.4 滚动区域
QScrollArea类提供了一个可以滚动的视口和两个滚动条。如果想给一个窗口部件添加一个滚动条,则可以使用一一个QScrollArea类来实现,这可能要比我们自己通过初始化QScrollBar,然后再实现它的滚动等功能简单得多。
QScrollArea的使用方法,就是以我们想要添加滚动条的窗口部件为参数调用setWidget()。如果这个窗口部件的父对象不是视口,QSrollArea会自动把这个窗口部件的父对象重定义为该视口(可以通过QSrollArea::viewport( )来访问) ,并且让它成为视口的子对象。例如,如果想在第5章中开发的IconEditor 窗口部件的周围添加滚动条(如图6. 11所示),则可以编写如下代码:
在QT中 WIdget在构建并显示以后会有一 个默认的大小,而此时其实已经存在窗口和视口,只是这两者在没有人为改变时大小是一样的,所以你可以忽略二者的存在;QT在绘图时是先在窗口中绘制然后再映射到视口上去的。 视口就是代表我们的物理窗口,窗口是代表绘图区(QT的画板)使用的逻辑坐标。 在两者相同的情况下也是一一映射关系,所以你会看到所画即所得。 但是当两者不同时,如果不理解就会觉得莫名其妙。
原文链接:https://blog.csdn.net/qjclinux/article/details/82864316
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
IconEditor iconEditor;
iconEditor.setWindowTitle(QObject::tr("Icon Editor"));
iconEditor.setIconImage(QImage(":/images/mouse.png"));
//iconEditor.show();
QScrollArea scrollArea;
//error: C2664: “void QScrollArea::setWidget(QWidget *)”: 无法将参数 1 从“IconEditor”转换为“QWidget *”没有可用于执行该转换的用户定义的转换运算符,或者无法调用该运算符
scrollArea.setWidget(iconEditor);
scrollArea.viewport()->setBackgroundRole