查看完整版本: [-- QScrollArea滚动条无法显示 --]

QTCN开发网 -> Qt基础编程 -> QScrollArea滚动条无法显示 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

caijin 2010-03-21 15:06

QScrollArea滚动条无法显示

我的程序思路是这样的,在MainWindow里面new了一个QFrame对象frame,并在上面画了一些图形,图形的长度超过了屏幕像素,所以就new了一个QScrollArea并调用setWidget(frame),但是运行后滚动条并未显示。然后我调用setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOn)和setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn)后虽然有滚动条出现,但是并不能拖动滚动条查看超过屏幕范围的那部分图形,问下大家这个应该怎么弄,谢谢!

carl_xwz 2010-03-21 15:32
如果是直接在窗口里画图我用QScrollArea时候也会出现要么花不出来要么就无法显示!所以如果楼主是想 直接画在frame上的话就推荐你自己重写mouse event来实现了 , 如果实在想加滚动条推荐你用QGraphicsWidget不过这个用法比较繁杂点但功能也跟着强大了!

xlttap 2010-03-22 09:32
用QGraphicsScene/QGraphicsView模式,然后用setCentralWidget()就行了。
或直接用QScrollArea

benbenmajia 2010-03-22 10:20
应该是页面刷新的问题

xlttap 2010-03-22 16:04
你还要把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);


查看完整版本: [-- QScrollArea滚动条无法显示 --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled