Implement basic styles for wxTreeCtrl under wxQT

This commit is contained in:
Graham Dawes
2019-02-05 13:46:32 +00:00
parent 308ef18a6d
commit 8efe01bd8e
2 changed files with 12 additions and 8 deletions

View File

@@ -112,6 +112,8 @@ public:
virtual bool GetBoundingRect(const wxTreeItemId& item, wxRect& rect, bool textOnly = false) const wxOVERRIDE; virtual bool GetBoundingRect(const wxTreeItemId& item, wxRect& rect, bool textOnly = false) const wxOVERRIDE;
virtual void SetWindowStyleFlag(long styles) wxOVERRIDE;
virtual QWidget *GetHandle() const wxOVERRIDE; virtual QWidget *GetHandle() const wxOVERRIDE;
protected: protected:

View File

@@ -71,6 +71,7 @@ bool wxTreeCtrl::Create(wxWindow *parent, wxWindowID id,
const wxString& name) const wxString& name)
{ {
m_qtTreeWidget = new wxQTreeWidget(parent, this); m_qtTreeWidget = new wxQTreeWidget(parent, this);
SetWindowStyleFlag(style);
return QtCreateControl(parent, id, pos, size, style, validator, name); return QtCreateControl(parent, id, pos, size, style, validator, name);
} }
@@ -337,9 +338,7 @@ void wxTreeCtrl::SetFocusedItem(const wxTreeItemId& item)
void wxTreeCtrl::ClearFocusedItem() void wxTreeCtrl::ClearFocusedItem()
{ {
QTreeWidgetItem *current = m_qtTreeWidget->currentItem(); m_qtTreeWidget->setCurrentItem(NULL);
if (current != NULL)
current->setSelected(false);
} }
wxTreeItemId wxTreeCtrl::GetFocusedItem() const wxTreeItemId wxTreeCtrl::GetFocusedItem() const
@@ -622,11 +621,7 @@ void wxTreeCtrl::SelectItem(const wxTreeItemId& item, bool select)
{ {
QList<QTreeWidgetItem *> selections = m_qtTreeWidget->selectedItems(); QList<QTreeWidgetItem *> selections = m_qtTreeWidget->selectedItems();
const size_t nSelections = selections.size(); const size_t nSelections = selections.size();
m_qtTreeWidget->clearSelection();
for (size_t i = 0; i < nSelections; ++i)
{
selections[i]->setSelected(false);
}
} }
QTreeWidgetItem *qTreeItem = wxQtConvertTreeItem(item); QTreeWidgetItem *qTreeItem = wxQtConvertTreeItem(item);
@@ -700,6 +695,13 @@ bool wxTreeCtrl::GetBoundingRect(const wxTreeItemId& item, wxRect& rect, bool te
return false; return false;
} }
void wxTreeCtrl::SetWindowStyleFlag(long styles)
{
wxControl::SetWindowStyleFlag(styles);
m_qtTreeWidget->invisibleRootItem()->setHidden((styles & wxTR_HIDE_ROOT) != 0);
m_qtTreeWidget->setSelectionMode(styles & wxTR_MULTIPLE ? QTreeWidget::MultiSelection : QTreeWidget::SingleSelection);
}
int wxTreeCtrl::DoGetItemState(const wxTreeItemId& item) const int wxTreeCtrl::DoGetItemState(const wxTreeItemId& item) const
{ {
wxCHECK_MSG(item.IsOk(), wxTREE_ITEMSTATE_NONE, "invalid tree item"); wxCHECK_MSG(item.IsOk(), wxTREE_ITEMSTATE_NONE, "invalid tree item");