• 9052阅读
  • 4回复

QScrollArea滚动条无法显示 [复制链接]

上一主题 下一主题
离线caijin
 
只看楼主 倒序阅读 楼主  发表于: 2010-03-21
我的程序思路是这样的,在MainWindow里面new了一个QFrame对象frame,并在上面画了一些图形,图形的长度超过了屏幕像素,所以就new了一个QScrollArea并调用setWidget(frame),但是运行后滚动条并未显示。然后我调用setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOn)和setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn)后虽然有滚动条出现,但是并不能拖动滚动条查看超过屏幕范围的那部分图形,问下大家这个应该怎么弄,谢谢!
离线carl_xwz
只看该作者 1楼 发表于: 2010-03-21
如果是直接在窗口里画图我用QScrollArea时候也会出现要么花不出来要么就无法显示!所以如果楼主是想 直接画在frame上的话就推荐你自己重写mouse event来实现了 , 如果实在想加滚动条推荐你用QGraphicsWidget不过这个用法比较繁杂点但功能也跟着强大了!
离线xlttap

只看该作者 2楼 发表于: 2010-03-22
用QGraphicsScene/QGraphicsView模式,然后用setCentralWidget()就行了。
或直接用QScrollArea
我简单我快乐
离线benbenmajia

只看该作者 3楼 发表于: 2010-03-22
应该是页面刷新的问题
安然.....
离线xlttap

只看该作者 4楼 发表于: 2010-03-22
你还要把QScrollArea放到一个Layout中,再通过setLayout()来显示
如这样:
    QFrame *frame = new QFrame;
    frame->setPalette(QPalette(globalColor));
    frame->setLayout(gLayout);    /* add button group to frame */
    QScrollArea *area = new QScrollArea;
    area->setWidget(frame);

    upLayout = new QHBoxLayout;
    upLayout->addWidget(area);

    mainLayout = new QVBoxLayout;
    mainLayout->addLayout(upLayout);
    setLayout(mainLayout);
我简单我快乐
快速回复
限100 字节
 
上一个 下一个