Qt: fixed bug where uniformrowheights weren't setted up on empty listview.Now we have TListView performance boost > 500%.

git-svn-id: trunk@24316 -
This commit is contained in:
zeljko 2010-03-31 14:22:04 +00:00
parent eeaeeb9665
commit 26a08a551d
2 changed files with 33 additions and 6 deletions

View File

@ -901,7 +901,9 @@ type
FSignalPressed: QAbstractItemView_hookH; FSignalPressed: QAbstractItemView_hookH;
FSignalViewportEntered: QAbstractItemView_hookH; FSignalViewportEntered: QAbstractItemView_hookH;
FAbstractItemViewportEventHook: QObject_hookH; FAbstractItemViewportEventHook: QObject_hookH;
function getIconSize: TSize;
function GetOwnerDrawn: Boolean; function GetOwnerDrawn: Boolean;
procedure setIconSize(const AValue: TSize);
procedure SetOwnerDrawn(const AValue: Boolean); procedure SetOwnerDrawn(const AValue: Boolean);
public public
constructor Create(const AWinControl: TWinControl; const AParams: TCreateParams); override; constructor Create(const AWinControl: TWinControl; const AParams: TCreateParams); override;
@ -926,6 +928,7 @@ type
procedure setEditTriggers(ATriggers: QAbstractItemViewEditTriggers); procedure setEditTriggers(ATriggers: QAbstractItemViewEditTriggers);
procedure setSelectionMode(AMode: QAbstractItemViewSelectionMode); procedure setSelectionMode(AMode: QAbstractItemViewSelectionMode);
procedure setSelectionBehavior(ABehavior: QAbstractItemViewSelectionBehavior); procedure setSelectionBehavior(ABehavior: QAbstractItemViewSelectionBehavior);
property IconSize: TSize read getIconSize write setIconSize;
property OwnerDrawn: Boolean read GetOwnerDrawn write SetOwnerDrawn; property OwnerDrawn: Boolean read GetOwnerDrawn write SetOwnerDrawn;
public public
procedure ItemDelegateSizeHint(option: QStyleOptionViewItemH; index: QModelIndexH; Size: PSize); cdecl; virtual; procedure ItemDelegateSizeHint(option: QStyleOptionViewItemH; index: QModelIndexH; Size: PSize); cdecl; virtual;
@ -1020,8 +1023,10 @@ type
private private
function getColVisible(AIndex: Integer): Boolean; function getColVisible(AIndex: Integer): Boolean;
function getColWidth(AIndex: Integer): Integer; function getColWidth(AIndex: Integer): Integer;
function GetUniformRowHeights: Boolean;
procedure setColVisible(AIndex: Integer; const AValue: Boolean); procedure setColVisible(AIndex: Integer; const AValue: Boolean);
procedure setColWidth(AIndex: Integer; const AValue: Integer); procedure setColWidth(AIndex: Integer; const AValue: Integer);
procedure SetUniformRowHeights(const AValue: Boolean);
protected protected
function CreateWidget(const AParams: TCreateParams):QWidgetH; override; function CreateWidget(const AParams: TCreateParams):QWidgetH; override;
public public
@ -1030,6 +1035,7 @@ type
procedure setRootIsDecorated(AValue: Boolean); procedure setRootIsDecorated(AValue: Boolean);
property ColWidth[AIndex: Integer]: Integer read getColWidth write setColWidth; property ColWidth[AIndex: Integer]: Integer read getColWidth write setColWidth;
property ColVisible[AIndex: Integer]: Boolean read getColVisible write setColVisible; property ColVisible[AIndex: Integer]: Boolean read getColVisible write setColVisible;
property UniformRowHeights: Boolean read GetUniformRowHeights write SetUniformRowHeights;
end; end;
{ TQtTreeWidget } { TQtTreeWidget }
@ -7979,6 +7985,11 @@ begin
Result := QTreeView_columnWidth(QTreeViewH(Widget), AIndex); Result := QTreeView_columnWidth(QTreeViewH(Widget), AIndex);
end; end;
function TQtTreeView.GetUniformRowHeights: Boolean;
begin
Result := QTreeView_uniformRowHeights(QTreeViewH(Widget));
end;
procedure TQtTreeView.setColVisible(AIndex: Integer; const AValue: Boolean); procedure TQtTreeView.setColVisible(AIndex: Integer; const AValue: Boolean);
begin begin
QTreeView_setColumnHidden(QTreeViewH(Widget), AIndex, not AValue); QTreeView_setColumnHidden(QTreeViewH(Widget), AIndex, not AValue);
@ -7989,6 +8000,11 @@ begin
QTreeView_setColumnWidth(QTreeViewH(Widget), AIndex, AValue); QTreeView_setColumnWidth(QTreeViewH(Widget), AIndex, AValue);
end; end;
procedure TQtTreeView.SetUniformRowHeights(const AValue: Boolean);
begin
QTreeView_setUniformRowHeights(QTreeViewH(Widget), AValue);
end;
procedure TQtTreeView.setWordWrap(AValue: Boolean); procedure TQtTreeView.setWordWrap(AValue: Boolean);
begin begin
QTreeView_setWordWrap(QTreeViewH(Widget), AValue); QTreeView_setWordWrap(QTreeViewH(Widget), AValue);
@ -10465,6 +10481,16 @@ begin
Result := FNewDelegate <> nil; Result := FNewDelegate <> nil;
end; end;
function TQtAbstractItemView.getIconSize: TSize;
begin
QAbstractItemView_iconSize(QAbstractItemViewH(Widget), @Result);
end;
procedure TQtAbstractItemView.setIconSize(const AValue: TSize);
begin
QAbstractItemView_setIconSize(QAbstractItemViewH(Widget), @AValue);
end;
procedure TQtAbstractItemView.SetOwnerDrawn(const AValue: Boolean); procedure TQtAbstractItemView.SetOwnerDrawn(const AValue: Boolean);
begin begin
if AValue and (FNewDelegate = nil) then if AValue and (FNewDelegate = nil) then

View File

@ -1490,22 +1490,23 @@ begin
end; end;
end; end;
QAbstractItemView_setIconSize(TreeWidget, @Size); QtTreeWidget.IconSize := Size;
Item := QTreeWidget_topLevelItem(TreeWidget, 0);
Item := QtTreeWidget.topLevelItem(0);
if Item <> nil then if Item <> nil then
begin begin
X := Size.CY; X := Size.CY;
QTreeWidgetItem_sizeHint(Item, @Size, 0); QTreeWidgetItem_sizeHint(Item, @Size, 0);
Size.Cy := X; Size.Cy := X;
QTreeWidgetItem_setSizeHint(Item, 0, @Size); QTreeWidgetItem_setSizeHint(Item, 0, @Size);
for j := 0 to QTreeWidget_columnCount(TreeWidget) - 1 do
for j := 0 to QtTreeWidget.ColCount - 1 do
begin begin
Item := QTreeWidget_itemAt(TreeWidget, j, 0); Item := QtTreeWidget.itemAt(j, 0);
QTreeWidgetItem_setSizeHint(Item, j, @Size); QTreeWidgetItem_setSizeHint(Item, j, @Size);
end; end;
QTreeView_setUniformRowHeights(TreeWidget, True);
end; end;
QtTreeWidget.UniformRowHeights := True;
end; end;
end. end.