首页| 论坛| 消息

标题:关于QWIdget大小设置的问题,还望不吝赐教。
作者:kingsgr
日期:2016-03-23 10:21
内容:

我在一个QMainWindow中放了一个QScrollArea,里面放了两个QWidget。如下图。
我想让每个QWidget都占满整个窗口,这样就可以用scrollbar上下拖动来查看。
而且无论mainwindow的大小如何调整,每个QWidget都是占据整个窗口,请问这个QWidget的大小应该怎么实现?


#1 [kimtaikee 03-23 10:36]
那你就在ScrollArea的resizeEvent中设置这两个Widget的Size都为ScrollArea的Viewport的尺寸大小。

ScrollArea::ScrollArea(QWidget* parent) : QScrollArea(parent)
{
m_container = new QWidget(this);
this->setWidgetResizable(true);

m_widget1 = new QWidget(this);
m_widget1->setStyleSheet("background-color: red;");

m_widget2 = new QWidget(this);
m_widget2->setStyleSheet("background-color: green;");

auto layout = new QVBoxLayout;
layout->addWidget(m_widget1);
layout->addWidget(m_widget2);

m_container->setLayout(layout);
setWidget(m_container);
}

void ScrollArea::resizeEvent(QResizeEvent *e)
{
m_widget1->setFixedSize(viewport()->size());
m_widget2->setFixedSize(viewport()->size());
QScrollArea::resizeEvent(e);
}
#2 [robinsonsir 03-23 10:42]
估计自己要自己写一下QWidget::resizeEvent(QResizeEvent *event)事件,在里面获取QMainWindow的大小,然后把新大小付值给QWidget_1和Widget_2。http://doc.qt.io/qt-5/qwidget.html#resizeEvent
#3 回 kimtaikee 的帖子 [kingsgr 03-23 10:53]
kimtaikee:
那你就在ScrollArea的resizeEvent中设置这两个Widget的Size都为ScrollArea的Viewport的尺寸大小。

ScrollArea::ScrollArea(QWidget* parent) : QScrollArea(parent)
{
.......
太厉害了,非常感谢!
#4 回 robinsonsir 的帖子 [kingsgr 03-23 10:55]
robinsonsir:估计自己要自己写一下QWidget::resizeEvent(QResizeEvent *event)事件,在里面获取QMainWindow的大小,然后把新大小付值给QWidget_1和Widget_2。http://doc.qt.io/qt-5/qwidget.html#resizeEvent (2016-03-23 10:42) 
也谢谢您的帮助

回复 发表
主题 版块