#3441 Improve table view to work better with more attribute types.

This commit is contained in:
Gaute Lindkvist 2018-10-02 14:55:17 +02:00
parent 0914d5b333
commit 71a1bd98ab
4 changed files with 19 additions and 8 deletions

View File

@ -122,7 +122,7 @@ void RimWellPathAttributeCollection::defineEditorAttribute(const caf::PdmFieldHa
auto tvAttribute = dynamic_cast<caf::PdmUiTableViewEditorAttribute*>(attribute);
if (tvAttribute)
{
tvAttribute->forceColumnWidthResize = true;
tvAttribute->autoResizeColumnsToFillContainer = true;
}
}
}

View File

@ -646,7 +646,7 @@ void RimWellPathGeometryDef::defineEditorAttribute(const caf::PdmFieldHandle* fi
if (tvAttribute && m_pickPointsEnabled)
{
tvAttribute->baseColor.setRgb(255, 220, 255);
tvAttribute->forceColumnWidthResize = true;
tvAttribute->autoResizeColumnsToFitContent = true;
}
}
}

View File

@ -47,6 +47,7 @@
#include <QApplication>
#include <QEvent>
#include <QGridLayout>
#include <QHeaderView>
#include <QLabel>
#include <QMenu>
#include <QTableView>
@ -208,15 +209,13 @@ void PdmUiTableViewEditor::configureAndUpdateUi(const QString& uiConfigName)
}
}
if ( m_previousFieldHandle != childArrayFH || editorAttrib.forceColumnWidthResize )
if ( m_previousFieldHandle != childArrayFH)
{
// Set default column widths
m_tableView->resizeColumnsToContents();
int colCount = m_tableModelPdm->columnCount();
// Set specified widths (if any)
if (editorAttribLoaded)
{
int colCount = m_tableModelPdm->columnCount();
for (int c = 0; c < colCount && c < static_cast<int>(editorAttrib.columnWidths.size()); c++)
{
auto w = editorAttrib.columnWidths[c];
@ -224,6 +223,16 @@ void PdmUiTableViewEditor::configureAndUpdateUi(const QString& uiConfigName)
}
}
if (editorAttrib.autoResizeColumnsToFitContent)
{
// Set default column widths
m_tableView->resizeColumnsToContents();
}
if (editorAttrib.autoResizeColumnsToFillContainer)
{
m_tableView->horizontalHeader()->setResizeMode(QHeaderView::Stretch);
}
}
m_previousFieldHandle = childArrayFH;

View File

@ -86,7 +86,8 @@ public:
, rowSelectionLevel(1)
, enableHeaderText(true)
, minimumHeight(-1)
, forceColumnWidthResize(false)
, autoResizeColumnsToFitContent(false)
, autoResizeColumnsToFillContainer(false)
{
QPalette myPalette;
baseColor = myPalette.color(QPalette::Active, QPalette::Base);
@ -99,7 +100,8 @@ public:
std::vector<int> columnWidths;
int minimumHeight; ///< Not used if If < 0
QColor baseColor;
bool forceColumnWidthResize;
bool autoResizeColumnsToFitContent;
bool autoResizeColumnsToFillContainer;
};