2015-04-30 2 views
2

У меня есть QTableview (несколько столбцов, сортировка) и вы хотите добавить кнопку, которая показывает дополнительные данные под текущей строкой. Для рендеринга этих дополнительных данных я хотел бы использовать другой виджет, который заполняет переменную высоту и охватывает все строки.Qtableview, добавить виджетов между строками

Хотя я знаю, что могу создавать делегаты для ячеек, мне было интересно, возможно ли это для строк, или это будет означать, что мне нужно было бы наследовать из таблицы и изменить его метод рисования, который, кажется, много работа для новичка, подобного мне.

ответ

0
QVariant YourTableModel::data(const QModelIndex & index, int32_t role) const 
{ 
    if (!index.isValid()) { 
    return QVariant(); 
    } 

    if (role == Qt::DisplayRole || role == Qt::EditRole) 
    { 
    switch (index.column()) 
    { 
    case YOUR_COL: 
     double theDouble = getDoubleFromModelSomewhere(); 
     return QString::number(theDouble, 'f', 3); // Format shows 3 decimals 
    } 
    } 

    return QVariant(); 
} 
+0

Прошу прощения, но это не то, что я ищу. Я ищу, чтобы иметь один ** виджет ** не пользовательские данные. Его будет означать, что я смогу что-то нарисовать. – ted

0

Если я правильно понял ваш вопрос, я думаю, что это ответ.

QTableView *view = new QTableView; 
view->setItemDelegateForRow(int row, QAbstractItemDelegate *delegate); 
+0

Да вам нужно наследовать QItemDelegate ... Хотя QStyledItemDelegate рекомендуется Qt. Используйте метод Paint, чтобы рисовать все, что вам нужно. Затем используйте приведенный выше код. –

Смежные вопросы