[Qt-interest] Tree Item view Highlighter
Sajjad
dosto.walla at gmail.com
Tue Jan 4 08:23:08 CET 2011
On Tue, Jan 4, 2011 at 7:43 AM, Andre Somers <andre at familiesomers.nl> wrote:
> Op 3-1-2011 23:29, Sajjad schreef:
>
> Hello forum,
>
>
> The following topic is the follow-up which has been discussed several
> days ago.
>
> It would have been better to continue the discussion in that tread then.
>
Sorry for the discontinuity.
>
> I want to highlight a particular tree item based on pattern matching. In
> that case i have sub-classed the QSortFilterProxyModel and over-ridden the
> following function
>
>
>
> //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
>
> bool H3DHighlighterProxyModel::filterAcceptsRow(int source_row, const QModelIndex &source_parent) const
>
> {
>
> std::cout << "In the filtration" << std::endl;
>
> QColor highLighter = Qt::cyan;
>
> QColor noHighLighter = Qt::white;
>
> if(sourceModel()->data(source_parent).toString().contains(filterRegExp()))
>
> {
>
> std::cout << "Will be highlighted" << std::endl;
>
> sourceModel()->setData(source_parent,QVariant(highLighter),Qt::BackgroundRole);
>
> }
>
> else
>
> {
>
> std::cout << "Will not be highlighted" << std::endl;
>
> sourceModel()->setData(source_parent,QVariant(noHighLighter),Qt::BackgroundRole);
>
> }
>
> return true;
>
> }
>
>
>
>
>
> ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
>
>
> But i am not getting any high-lighting effect with the textChanged signal
> in the line edit . The appropriate slot has been connected as follows:
>
>
>
>
> //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
>
> void H3DNodeListWidget::highlightRegExpChanged()
>
> {
>
> QRegExp regExp(m_nodeHighlightingEditor->text(),Qt::CaseInsensitive);
>
> m_highlightModel->setFilterRegExp(regExp);
>
> }
>
>
>
>
> ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
>
>
> If there is anything missing in the process or logical mistake, please
> mark it out for me that i am missing.
>
> Yes. Don't reimplement filterAcceptsRow, just let it return true (it does
> that by default, I think). Instead, reimplement the data() function, and
> _return_ the color you want for the rows that you want to highlight when the
> background role is queried. Otherwise, return whatever data the source model
> provides you. Something like this:
>
> QVariant H3DHighlighterProxyModel::data(const QModelIndex &index, int role) const
>
> {
>
> QModelIndex sourceIndex = mapToSource(index); //get a handle on the underlying data
> if (!sourceIndex.isValid())
> return QVariant();
>
> if (role == Qt::Background) {
> if (//needs to be highlighted) {
> return Qt::cyan;
> } else {
> return QVariant(); //use the default background color, whatever that may be
> }
> } else {
> return sourceIndex.data(role);
> }
> }
>
>
According to the suggestion the id as follows:
///////////////////////////////////////////////////////////////////////////////////////////////////////
QVariant H3DHighlighterProxyModel::data(const QModelIndex &index, int
role) const
{
//get the handle to the underlyiing data
QModelIndex sourceIndex = mapToSource(index);
if(!sourceIndex.isValid())
{
return QVariant();
}
if(role == Qt::BackgroundRole)
{
if(sourceModel()->data(sourceIndex).toString().contains(filterRegExp()))
{
return Qt::cyan;
}
else
{
//return the default background color
//whatever may it be
return QVariant();
}
}
else
{
return sourceIndex.data(role);
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////
Is there anything missing up there? I removed the other function that i
over-rid mentioned in the previous post.
I am still not getting any effect. The textchanged() signal is connected to
the slot as before.
Thanks
Sajjad
>
>
>
> André
>
>
> _______________________________________________
> Qt-interest mailing list
> Qt-interest at qt.nokia.com
> http://lists.qt.nokia.com/mailman/listinfo/qt-interest
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.qt-project.org/pipermail/qt-interest-old/attachments/20110104/a3ddb3ab/attachment.html
More information about the Qt-interest-old
mailing list