Qt ::tooltiproleне запускается

#qt #tooltip #model-view

#qt #всплывающая подсказка #модель-представление

Вопрос:

Я использую модель, реализованную с использованием QAbstractTableModel. Я хочу показать отдельные всплывающие подсказки для всех заголовков. Однако в реализациях data() и headerData(), когда я печатаю роль, она никогда не становится Qt::ToolTipRole . Есть ли что-нибудь еще, что я должен сделать, чтобы запустить tooltiprole здесь?

 QVariant jlsGenericReportTableModel::data(const QModelIndex amp;index, int role) const
{
    printf("Role in data() = %dn",role);
    if (role == Qt::DisplayRole)
    {

        //        printf(" --- Returnedn");
        if(_dataStore)
        {
            if(index.row() < _dataStore->RowCount())
            {
                return _dataStore->DataForTuple(index.row(),index.column());
            }
        }
        else
        {
            if(index.row() < _rows.size())
            {
                return _rows.at(index.row())->DataForColumn(index.column());
            }
        }
    }
else if (role == Qt::TextAlignmentRole )
{

    if (( (QMetaType::Type)(data(index,Qt::DisplayRole)).type()) == QMetaType::QString)
        return QVariant(Qt::AlignLeft | Qt::AlignVCenter);
    else
        return QVariant(Qt::AlignRight | Qt::AlignVCenter);
}
else if (role == Qt::ToolTipRole) {
    printf("Triggeredn");     //Doesn't come here
    //if (orientation == Qt::Horizontal)
        return QString("Horizontal Header No. ");
    //else
      //  return QString("Vertical Header No. ");
}
return QVariant();
 

}

Комментарии:

1. Какое представление вы используете с моделью?

2. Привет, Фрэнк, я использую здесь QTableView.

3. Для заголовков вам следует переопределить headerData()

4. Я тоже его переопределяю. Но роль никогда не будет Qt :: ToolTipRole .

5. В data () он работает, хотя