C++ 在Qt中滚动隐藏的QWidget
我有一个C++ 在Qt中滚动隐藏的QWidget,c++,qt,C++,Qt,我有一个QWidget,有时可以隐藏它。此QWidget处理导致此小部件滚动的外部事件。问题是:当这个小部件被隐藏时,就不会执行滚动。简化示例: QWidget* scrollPanel = new QWidget(parent); scrollPanel->setGeometry(0, 0, 100, 100); scrollPanel->setStyleSheet("background: blue"); QWidget* item = new QWidget(scrollPan
QWidget
,有时可以隐藏它。此QWidget
处理导致此小部件滚动的外部事件。问题是:当这个小部件被隐藏时,就不会执行滚动。简化示例:
QWidget* scrollPanel = new QWidget(parent);
scrollPanel->setGeometry(0, 0, 100, 100);
scrollPanel->setStyleSheet("background: blue");
QWidget* item = new QWidget(scrollPanel);
item->setGeometry(20, 20, 20, 20);
item->setStyleSheet("background: white");
// ... hide or show scrollPanel
scrollPanel->scroll(0, -20);
如果parent
被隐藏或scrollPanel
被隐藏,则scrollPanel->scroll(0,-20)代码>什么也不做。如果所有内容都可见,则scrollPanel->scroll(0,-20)代码>按预期工作:
scrollPanel->show();
scrollPanel->scroll(0, -20); //works
及
所以,如果QWidget
是隐藏的,有没有办法滚动它?你可以在滚动前后尝试一个显示/隐藏循环。查看源代码,在的开头有一个可见的复选框::滚动函数,它从QWidgetPrivate
调用scroll\u sys
,这是通过其他方式无法访问的,所以很遗憾,答案是否定的。你不能通过覆盖paintEvent而不绘制任何内容来“隐藏”它吗?
scrollPanel->hide();
scrollPanel->scroll(0, -20); //does not work