[Qt-interest] highlight item view

Sajjad dosto.walla at gmail.com
Tue Jun 14 22:47:35 CEST 2011


Hello forum,

I am trying to highlight a particular tree-item based on the string entered
by the user in the line edit and i am doing the following:


1. I subclass the QSortFilterProxyModel and over-ride the data() function as
follows:

     1.1. map the model index to the source.

     1.2. Check if the mapped model index is valid or not.

     1.3. And change the color of the background using the background role.

2. In the widget i have the line edit and the tree view which will be
interacting with each other based on the user input.

3. In  the widget's constructor i instantiate the object of the subclass
that i have creaed in step 1.

4. Set its source model.

5. Set view to both the model and proxy model.

6. Made a signal & slot connection  - whenever the text inside the textedit
is changed, the custom slot is called to do the highlighting s follows:


    6.1. Create a regular expression object , which takes the following
parameter:

           6.1.1.  The text from the line edit - 1st parameter.
           6.1.2.  Flag  - Qt::CaseInsensitive.
           6.1.3.  Flag - Qt::FixedString.


     6.2. Declare two model indexes and initializing as follows(THIS IS
WHERE I AM MAKING THE MISTAKE I GUESS):

          //////////////////////////////////////////////////

    const QModelIndex topLeft = m_highlightModel->index(0,0,QModelIndex());

    const QModelIndex bottomRight =
m_highlightModel->index(0,m_highlightModel->columnCount()-1,topLeft);


    //////////////////////////////



    emit proxyModelHighlightChanged(topLeft,bottomRight);

     //emit m_highlightModel->dataChanged(topLeft,bottomRight);

    connect(this,SIGNAL(proxyModelHighlightChanged(QModelIndex,QModelIndex)),m_highlightModel,SIGNAL(dataChanged(QModelIndex,QModelIndex)));




Now i am not getting the effect i am looking for. I am looking for the
following:




1. Whenever the user enters any text in the line edit, the text will
be matched against all the tree item and highlighted.


2. Some of the item may be hidden as the parent item is not expanded.
In that case the parent will be expanded and the child will be

   highlighted.


3. If the entered string does not match , nothing will happen.



But i am getting the following:


1. All the items are highlighted, when the application is loaded.


2. The item inside the tree is filtered when the entered string
matches any item, thus reducing the number of items in the tree . I do
not want to alter anything inside the

   tree view. I just want to highlight the tree item by changing the
background color.


3. I can match only the parent item, but cannot go down to the child
and sub-childs item and high-light it.



I hope that i am elaborated enough. If it is not clear enough for any
one of you, please do not hesitate to comment. It has been

quite a while i am stuck with this issue. Any tips will be helping a lot.




NOTE: Couple of days ago my email account has been cracked and it
might had spammed the forum. If there were anything totally

      non-related to Qt, it was not me. The account setting is
restored now. If those materials disturbed anyone i deeply apologise

      for it.



Thanks

Sajjad
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.qt-project.org/pipermail/qt-interest-old/attachments/20110614/0db421c7/attachment.html 


More information about the Qt-interest-old mailing list