コード例 #1
0
ファイル: tooltipfilter.cpp プロジェクト: LI-COR/eddypro-gui
bool TooltipFilter::eventFilter(QObject *obj, QEvent *event)
{
    if (event->type() == QEvent::ToolTip)
    {
        QWidget *w = static_cast<QWidget *>(obj);
        QHelpEvent *helpEvent = static_cast<QHelpEvent *>(event);
        QPoint pos = helpEvent->globalPos();
        QString itemTooltip = w->toolTip();
        QRect rect = w->rect();

        // case of instrument tables inside a scrollarea viewport
        if (w->objectName() == QLatin1String("qt_scrollarea_viewport"))
        {
            QAbstractItemView* view = qobject_cast<QAbstractItemView*>(obj->parent());
            if (!view)
            {
                return false;
            }
            w = view;

            QPoint position = helpEvent->pos();

            QModelIndex index = view->indexAt(position);
            if (!index.isValid())
            {
                return false;
            }
            rect = view->visualRect(index);
            itemTooltip = view->model()->data(index, Qt::ToolTipRole).toString();
        }

        switch (tooltipType_)
        {
            case TooltipType::NoTooltip:
                QToolTip::hideText();
                return true;
            case TooltipType::StdTooltip:
                QToolTip::showText(pos, itemTooltip, w, rect);
                return true;
            case TooltipType::CustomTooltip:
                break;
            default:
                QToolTip::hideText();
                emit updateTooltipRequest(itemTooltip);
                return true;
        }
    }

    return QObject::eventFilter(obj, event);
}
コード例 #2
0
//qt3to4 -- BW
//void ComboBoxToolTip::ShowHideTip( int index, QLabel* tipL, Q3ListBox* lb, const QString& text )
void ComboBoxToolTip::ShowHideTip( int index, QLabel* tipL, QComboBox* lb, const QString& text )
{

 //if ( lb->isVisible() && !lb->isHidden() && lb->hasMouse() )
 if ( lb->isVisible() && !lb->isHidden() )
  {
        //qt3to4 -- BW
        QAbstractItemView* qv = lb->view();
        //qt3to4 -- BW
        //QRect rect = lb->itemRect ( lb->item( index ) );
        QRect rect = qv->visualRect(lb->rootModelIndex());
        tipL->setMargin(1);
        tipL->setIndent(0);
        //qt3to4 -- BW
        //tipL->setAutoMask( FALSE );
        tipL->setFrameStyle( QFrame::Plain | QFrame::Box );
        tipL->setLineWidth( 1 );
        tipL->setAlignment( Qt::AlignLeft | Qt::AlignTop );
        //tipL->polish();
        tipL->setText(text);
        tipL->adjustSize();
        QPoint pos;
   	      pos.setX( rect.right() + 15 );
	      pos.setY( rect.top() );
	      pos = lb->mapToGlobal( pos );
         tipL->move( pos.x(), pos.y() );
         tipL->show();
         tipL->raise();
         return;
  }
  else{
	if (!tipL->isHidden() )
		tipL->hide();
  }

  /*
  if ( !lb->isVisible() || lb->isHidden() ||
       !lb->hasMouse()) {
            tipL->hide();
  }
  */


}
コード例 #3
0
ファイル: TableViewTooltip.cpp プロジェクト: biophor/AdBook
bool TableViewTooltip::eventFilter(QObject * obj, QEvent * event)
{
    if (event->type() != QEvent::ToolTip) {
        return false;
    }
    QAbstractItemView* view = qobject_cast<QAbstractItemView*>(obj->parent());
    if (!view) {
        return false;
    }
    
    QHelpEvent * helpEvent = static_cast<QHelpEvent*>(event);
    QPoint pos = helpEvent->pos();
    QModelIndex index = view->indexAt(pos);
    if (!index.isValid()) {
        return false;
    }
    QString itemTooltip = view->model()->data(index, Qt::ToolTipRole).toString();
    if (itemTooltip.isEmpty()) {
        QToolTip::hideText();
        return true;
    }
    QString itemText = view->model()->data(index).toString();
    
    QFontMetrics fm(view->font());
    int textIdentWidth =6;// fm.width('r'); // don't know how to calculate an ident for text in an item :-( 
    int itemTextWidth = fm.width(itemText) + textIdentWidth;
    QRect rect = view->visualRect(index);
    
    int rectWidth = rect.width();

    if (itemTextWidth > rectWidth) {
        QToolTip::showText(helpEvent->globalPos(), itemTooltip, view, rect);
    }
    else {
        QToolTip::hideText();
    }
    return true;    
}
コード例 #4
0
ファイル: ColumnToolTip.cpp プロジェクト: helkatz/LogViewer
bool ColumnToolTip::eventFilter(QObject* obj, QEvent* event)
{
	if (event->type() == QEvent::ToolTip)
	{
		QAbstractItemView* view = qobject_cast<QAbstractItemView*>(obj->parent());
		if (!view)
		{
			return false;
		}

		QHelpEvent* helpEvent = static_cast<QHelpEvent*>(event);
		QPoint pos = helpEvent->pos();
		QModelIndex index = view->indexAt(pos);
		if (!index.isValid())
			return false;

		QString itemText = view->model()->data(index).toString();
		QString itemTooltip = view->model()->data(index, Qt::ToolTipRole).toString();

		QFontMetrics fm(view->font());
		int itemTextWidth = fm.width(itemText);
		QRect rect = view->visualRect(index);
		int rectWidth = rect.width();

		if ((itemTextWidth > rectWidth) && !itemTooltip.isEmpty())
		{
			QToolTip::showText(helpEvent->globalPos(), itemTooltip, view, rect);
		}
		else
		{
			QToolTip::hideText();
		}
		return true;
	}
	return false;
}