作为标题,可以更改wxDataViewListCtrl中单个单元格的背景颜色吗?如果没有,是否可以更改整行的背景颜色? 我该怎么做?其他解决方案? 在此先多谢一些建议
答案 0 :(得分:1)
您可以在自定义模型中覆盖wxDataViewListModel::GetAttrByRow()
,以返回任何单元格所需的颜色(和字体等)属性。
答案 1 :(得分:0)
对于那些可能感兴趣的人,我已经解决了以下问题
class MyColorRenderer: public wxDataViewCustomRenderer { public: explicit MyColorRenderer(wxDataViewCellMode mode) : wxDataViewCustomRenderer("string", mode, wxALIGN_CENTER) { } virtual bool Render( wxRect rect, wxDC *dc, int state ) override; virtual bool ActivateCell(const wxRect& WXUNUSED(cell), wxDataViewModel*WXUNUSED(model), const wxDataViewItem &WXUNUSED(item), unsigned int WXUNUSED(col), const wxMouseEvent *mouseEvent) override { return false; } virtual wxSize GetSize() const override { return wxSize(60,20); } virtual bool SetValue( const wxVariant &value ) override { m_value = value.GetString(); return true; } virtual bool GetValue( wxVariant &WXUNUSED(value) ) const override { return true; } virtual bool HasEditorCtrl() const override { return true; } virtual wxWindow* CreateEditorCtrl(wxWindow* parent, wxRect labelRect, const wxVariant& value) override { wxTextCtrl* text = new wxTextCtrl(parent, wxID_ANY, value, labelRect.GetPosition(), labelRect.GetSize(), wxTE_PROCESS_ENTER); text->SetInsertionPointEnd(); return text; } virtual bool GetValueFromEditorCtrl(wxWindow* ctrl, wxVariant& value) override { wxTextCtrl* text = wxDynamicCast(ctrl, wxTextCtrl); if ( !text ) return false; value = text->GetValue(); return true; } private: wxString m_value; };
bool MyColorRenderer::Render( wxRect rect, wxDC *dc, int state ) { dc->SetBrush( wxColour(m_value) ); rect.Deflate(2); dc->DrawRoundedRectangle( rect, 5 ); return true; }
lst-> AppendColumn(新wxDataViewColumn(“ Colore”,新 MyColorRenderer(wxDATAVIEW_CELL_INERT),5,60,wxALIGN_CENTER));