crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Делегат для конкретной ячейки в QTableView
JuryS1806
  опции профиля:
сообщение 21.1.2011, 2:09
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 93
Регистрация: 21.10.2009
Из: Нижний Новгород
Пользователь №: 1168

Спасибо сказали: 9 раз(а)




Репутация:   0  


Всем привет !

Здорово работать с QTableView при помощи делегатов, но вот такая незадача, например, я могу установить делегат для столбца или строки таблицы, а как присвить его конкретному индексу.

В MS Access это делается очень легко и непринужденно, а здесь я так понял можно только через setIndexWidget и созданный Widget подцеплять к четырем слотам, вместо простоейшего использования ItemDelegate.

В справке нашел:
Note: If a delegate has been assigned to both a row and a column, the row delegate (i.e., this delegate) will take presedence and manage the intersecting cell index.
т.е. как бы если назначить делегат для строки и столбца, будет работать в ячейки пересечения, но почему то он работает и по гориз и по верт.

Спасибо заранее за помощь !

P.S.
Any existing row delegate for row will be removed, but not deleted. QAbstractItemView does not take ownership of delegate.
т.е. опять memory leaks ?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
igor_bogomolov
  опции профиля:
сообщение 22.1.2011, 0:10
Сообщение #2


Профессионал
*****

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

Спасибо сказали: 235 раз(а)




Репутация:   29  


Можно конечно и так, каждый сам для себя решает, вот только это не универсально, т.к. к другой таблице ты этот делегат не применишь.
А вот если ты сделаешь примерно так
QWidget *StdDelegate::createEditor(QWidget *parent,const QStyleOptionViewItem &,
                                    const QModelIndex & index) const
{
    QWidget *editor = 0;
    typeeditor = index.data(Qt::UserRole).toInt();
    switch(typeeditor)
    {
    case K095::TQComboBox:
        {
            QComboBox *cmbox = new QComboBox(parent);
            editor = cmbox;
            break;
        }
        case K095::TQSpinBox:
        {
            QSpinBox *spbox = new QSpinBox(parent);
            editor = spbox;
            break;
        }
        ....
        default:
        {
            QLineEdit *ledit = new QLineEdit(parent);
            editor = ledit;
        }
    }
    return editor;
}
получишь делигат применимый к любой таблице, всё что надо будет сделать, проинициализировать UserRole
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- JuryS1806   Делегат для конкретной ячейки в QTableView   21.1.2011, 2:09
- - igor_bogomolov   Цитата(JuryS1806 @ 21.1.2011, 2:09) Note:...   21.1.2011, 8:53
|- - JuryS1806   Спасибо за ответ. Я вот вчера к утру додумал к сле...   21.1.2011, 23:44
|- - JuryS1806   Нет, тоже не вариант. Если до этого какой-нибудь я...   22.1.2011, 0:11
- - igor_bogomolov   Можно конечно и так, каждый сам для себя решает, в...   22.1.2011, 0:10
- - igor_bogomolov   Цитата(JuryS1806 @ 22.1.2011, 0:11) Нет, ...   22.1.2011, 0:22
|- - JuryS1806   И на том спасибо. Просто боюсь костыли приделывать...   22.1.2011, 0:29
- - igor_bogomolov   Цитата(JuryS1806 @ 22.1.2011, 0:29) Прост...   22.1.2011, 0:36
|- - JuryS1806   Да. это и вправду лучшее решение сейчас. только до...   22.1.2011, 1:04
- - igor_bogomolov   Цитата(JuryS1806 @ 22.1.2011, 1:04) Я пра...   22.1.2011, 1:11
|- - JuryS1806   вот и простейший делегат от тролей: QSqlRelational...   22.1.2011, 1:21
- - igor_bogomolov   Цитата(JuryS1806 @ 22.1.2011, 1:21) Вообщ...   22.1.2011, 1:33
|- - JuryS1806   Вообщем, приблизительно сделал так: delegate.h : ...   30.1.2011, 17:07
|- - JuryS1806   Еще массу наработок сделал. Если кому нужно, пишит...   1.2.2011, 2:28
- - dragomir   Заранее извиняюсь. Надо срочно использовать описа...   20.11.2011, 22:03


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 28.4.2024, 2:55