C++ (Qt)class Model : public QSqlQueryModel{ Q_OBJECT public: Model(QWidget *parent=0):QSqlQueryModel(parent){} ~Model(){} QVariant data(const QModelIndex &index,int role = Qt::DisplayRole) const{ QVariant value = QSqlQueryModel::data(index, role); switch (role){ case Qt::ToolTipRole: return(QSqlQueryModel::data(index)); } return value; }};
C++ (Qt)QString sql="запрос";QSqlQueryModel *mod= new QSqlQueryModel();mod->setQuery(sql);for(int i=0;i<mod->rowCount();i++)mod->setData(mod->index(i,2), mod->data(mod->index(i,2)),Qt::ToolTipRole);ui.tableView->setModel(mod);
C++ (Qt)QVariant Model::data(const QModelIndex &index, int role /*= Qt::DisplayRole*/) const{ if (index.column() == 2 && role == Qt::ToolTipRole) return QSqlQueryModel::data(index, Qt::DisplayRole); return QSqlQueryModel::data(index, role);}
C++ (Qt)void MyWindow::hotKeyTriggered(){ const QModelIndex index = ...; const QPoint pos = view->visualRect( index ).center(); QHelpEvent helpEvent( QEvent::ToolTip, pos, view->viewport()->mapToGlobal( pos ) ) QCoreApplication::sendEvent( view->viewport(), &helpEvent );}
C++ (Qt)bool event(QEvent *event){ if(event->type()==QEvent::ToolTip) { QHelpEvent *helpEvent = static_cast<QHelpEvent *>(event); QModelIndex Cursor=ui.tableView->indexAt(helpEvent->pos()); QString ToolTipText=model->data(model->index(Cursor.row(),Cursor.column())).toString(); if(!ToolTipText.isEmpty()) QToolTip::showText(helpEvent->globalPos(), ToolTipText);} return QWidget::event(event);}