PDA

View Full Version : QTreeWidgetItem with tooltip+pixmap



Zed
20th January 2011, 14:08
Hi to all, I'm using the following code to setup a tooltip text for a TreeWidgetItem:

myTreeWidgetItem->setToolTip(myColumn, "My ToolTip text");

I would like to set a QPixmap instead of
"My ToolTip text" , but i can't.

I could use a rich text to load image from resources, for example:

<img src=":/images/myFileImage.png">
but i would mix the code above with a QPixmap dynamically generated.

Do I have to use QMimeData?
Any suggestions?

Many Regards.

Zed
21st January 2011, 16:40
No answer?
Ok, i will share my solution.

In MyTreeWidget class:


connect(this, SIGNAL(itemEntered(QTreeWidgetItem*,int)), this, SLOT(onItemEntered(QTreeWidgetItem*, int)));

void MyTreeWidget::onItemEntered(QTreeWidgetItem* nItem, int nColumn)
{
MyTreeWidgetItem* itemCasted = static_cast<MyTreeWidgetItem*>(nItem);
static MyTreeWidgetItem* currentItem = 0;
if (currentItem && (currentItem != itemCasted ))
{
currentItem->endTracking();
}
currentItem = itemCasted;
currentItem->beginTracking();
}


in MyTreeWidgetItemclass:



void MyTreeWidgetItem::endTracking()
{
dynamicLabel.hide();
}

void MyTreeWidgetItem::beginTracking()
{
if (dynamicLabel.isHidden())
{
dynamicLabel.show();
currentTime = 0;
maxTime = 1000;
advance();
}
else
{
currentTime = 0;
}
}

void MyTreeWidgetItem::advance()
{
if (currentTime < maxTime)
{
currentTime += 25;
QPoint newPos = QCursor::pos();
newPos.setX(newPos.x() + 10);
dynamicLabel.move(newPos);
QTimer::singleShot(25, this, SLOT(advance()));
}
else
{
endTracking();
}
}

of course, we need to extends QObject


class MyTreeWidgetItem : public QObject, public QTreeWidgetItem
{
Q_OBJECT