• 4692阅读
  • 4回复

[提问]关于QWIdget大小设置的问题,还望不吝赐教。 [复制链接]

上一主题 下一主题
离线kingsgr
 

只看楼主 倒序阅读 楼主  发表于: 2016-03-23
我在一个QMainWindow中放了一个QScrollArea,里面放了两个QWidget。如下图。
我想让每个QWidget都占满整个窗口,这样就可以用scrollbar上下拖动来查看。
而且无论mainwindow的大小如何调整,每个QWidget都是占据整个窗口,请问这个QWidget的大小应该怎么实现?
window.open('http://www.qtcn.org/bbs/attachment/Mon_1603/17_156450_f3a1b3651489363.png?27');" style="max-width:700px;max-height:700px;" onload="if(is_ie6&&this.offsetWidth>700)this.width=700;" >


离线kimtaikee

只看该作者 1楼 发表于: 2016-03-23
那你就在ScrollArea的resizeEvent中设置这两个Widget的Size都为ScrollArea的Viewport的尺寸大小。
  1. ScrollArea::ScrollArea(QWidget* parent) : QScrollArea(parent)
  2. {
  3.     m_container = new QWidget(this);
  4.     this->setWidgetResizable(true);
  5.     m_widget1 = new QWidget(this);
  6.     m_widget1->setStyleSheet("background-color: red;");
  7.     m_widget2 = new QWidget(this);
  8.     m_widget2->setStyleSheet("background-color: green;");
  9.     auto layout = new QVBoxLayout;
  10.     layout->addWidget(m_widget1);
  11.     layout->addWidget(m_widget2);
  12.     m_container->setLayout(layout);
  13.     setWidget(m_container);
  14. }
  15. void ScrollArea::resizeEvent(QResizeEvent *e)
  16. {
  17.     m_widget1->setFixedSize(viewport()->size());
  18.     m_widget2->setFixedSize(viewport()->size());
  19.     QScrollArea::resizeEvent(e);
  20. }

1条评分金钱+10
kingsgr 金钱 +10 - 2016-03-23

离线robinsonsir

只看该作者 2楼 发表于: 2016-03-23
估计自己要自己写一下QWidget::resizeEvent(QResizeEvent *event)事件,在里面获取QMainWindow的大小,然后把新大小付值给QWidget_1和Widget_2。http://doc.qt.io/qt-5/qwidget.html#resizeEvent
离线kingsgr

只看该作者 3楼 发表于: 2016-03-23
回 kimtaikee 的帖子
kimtaikee:
那你就在ScrollArea的resizeEvent中设置这两个Widget的Size都为ScrollArea的Viewport的尺寸大小。
[code]
ScrollArea::ScrollArea(QWidget* parent) : QScrollArea(parent)
{
.......

太厉害了,非常感谢!
离线kingsgr

只看该作者 4楼 发表于: 2016-03-23
回 robinsonsir 的帖子
robinsonsir:估计自己要自己写一下QWidget::resizeEvent(QResizeEvent *event)事件,在里面获取QMainWindow的大小,然后把新大小付值给QWidget_1和Widget_2。http://doc.qt.io/qt-5/qwidget.html#resizeEvent (2016-03-23 10:42) 

也谢谢您的帮助
快速回复
限100 字节
 
上一个 下一个