No answer?
Ok, i will share my solution.
In MyTreeWidget class:
{
MyTreeWidgetItem* itemCasted = static_cast<MyTreeWidgetItem*>(nItem);
static MyTreeWidgetItem* currentItem = 0;
if (currentItem && (currentItem != itemCasted ))
{
currentItem->endTracking();
}
currentItem = itemCasted;
currentItem->beginTracking();
}
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();
}
To copy to clipboard, switch view to plain text mode
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;
newPos.setX(newPos.x() + 10);
dynamicLabel.move(newPos);
QTimer::singleShot(25,
this,
SLOT(advance
()));
}
else
{
endTracking();
}
}
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();
}
}
To copy to clipboard, switch view to plain text mode
of course, we need to extends QObject
{
Q_OBJECT
class MyTreeWidgetItem : public QObject, public QTreeWidgetItem
{
Q_OBJECT
To copy to clipboard, switch view to plain text mode
Bookmarks