与QScrollAreas有一些问题..
我希望能够动态启用/禁用滚动条,因此我尝试实现
scrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);`
这会导致应用程序以代码255终止并且不输出任何内容。注释掉该行的输出正常。我可以用:
scrollArea->horizontalScrollBar()->setValue(0);
也没有问题。我尝试了自定义QScrollArea的子类,看看是否可以让我修改qscrollbar,但同样的问题。 scrollArea在ui表单上构造,并在自定义displayWindow类中重新定位。
有什么想法吗?
答案 0 :(得分:0)
为什么要在ui表单中构建一个滚动区域,然后在其他地方重新使用它?这不是一个问题,但这样做没有多大意义。您知道,我希望Qt Designer允许您使用自定义类,即使不编写任何插件。
但是,我无法重现你的问题。请创建一个再现它的sscce。确保scrollArea
不是nullptr
。我打赌它是,或者它是一个悬空指针(指向解除分配的内存)。下面的Qt 4和Qt 5上的罚款。水平滚动条 根据需要被抑制。
#include <QApplication>
#include <QScrollArea>
#include <QLabel>
#include <QScopedPointer>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QScopedPointer<QScrollArea> area (new QScrollArea);
QLabel * label = new QLabel(QString(300, 'm'));
area->setWidget(label);
area->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
area->show();
return a.exec();
}