#1343 Property Editor : Use vertical scroll bar only

This commit is contained in:
Magne Sjaastad 2017-03-21 15:32:07 +01:00
parent 6e948e9ab5
commit 7095e80696
2 changed files with 45 additions and 1 deletions

View File

@ -40,8 +40,37 @@
#include "cafPdmObject.h"
#include "cafPdmUiDefaultObjectEditor.h"
#include <QEvent>
#include <QHBoxLayout>
#include <QScrollArea>
#include <QScrollBar>
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QVerticalScrollArea::QVerticalScrollArea(QWidget* parent) :
QScrollArea(parent)
{
setWidgetResizable(true);
setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded);
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool QVerticalScrollArea::eventFilter(QObject* object, QEvent* event)
{
// This works because QScrollArea::setWidget installs an eventFilter on the widget
if (object && object == widget() && event->type() == QEvent::Resize)
{
setMinimumWidth(widget()->minimumSizeHint().width() + verticalScrollBar()->width());
}
return QScrollArea::eventFilter(object, event);
}
namespace caf
@ -54,7 +83,7 @@ namespace caf
PdmUiPropertyView::PdmUiPropertyView(QWidget* parent, Qt::WindowFlags f)
: QWidget (parent, f)
{
QScrollArea* scrollArea = new QScrollArea(this);
QVerticalScrollArea* scrollArea = new QVerticalScrollArea(this);
scrollArea->setFrameStyle(QFrame::NoFrame);
scrollArea->setWidgetResizable(true);

View File

@ -43,6 +43,21 @@
class QVBoxLayout;
#include <QScrollArea>
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
class QVerticalScrollArea : public QScrollArea
{
Q_OBJECT
public:
explicit QVerticalScrollArea(QWidget* parent = 0);
virtual bool eventFilter(QObject* object, QEvent* event) override;
};
namespace caf
{