crossplatform.ru

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


  Ответ в QComboBox в QTableView
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
giker Дата 23.12.2010, 13:37
  Подсказали: Оказывается надо вызвать
ui->tableView->openPersistentEditor(m_model->index(0, 2));


и в заданной ячейке всегда будет комбобокс!
giker Дата 22.12.2010, 16:13
  Спасибо, но это не много не то. Как сделать так чтобы при выделении нужная ячейка превращалась в QComboBox хорошо показано в примере qtdemos->ItemViews->SpinboxDelegate + надо выставить ui->tableView->setEditTriggers(QAbstractItemView::AllEditTriggers), что бы ячейка переходила в режим редактирования при клике по ней. Но мне нужно что бы ячейка выглядела как QComboBox в нередактируемом состоянии.
FantasyOr Дата 22.12.2010, 15:44
  единственное, что могу посоветовать:
в папке с Qt есть папка "\demos\spreadsheet" там реализация делегата QDateTimeEdit в ячейке. Немного осмыслив этот пример можно и переделать на QComboBox.
giker Дата 22.12.2010, 15:14
  Здравствуйте! Нужно отрисовывать QComboBox в QTableView так что бы ячейки всегда выглядели как QComboBox. Выяснил что для этого нужно переопределить метод paint у QStyledItemDelegate. Пробую переопределить его так:
void ComboBoxDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
{
    QString value = index.data().toString();
    QStyleOptionComboBox comboBoxOption;
    comboBoxOption.currentText = value;
    comboBoxOption.rect = option.rect;
    comboBoxOption.state = QStyle::State_Enabled;
    QApplication::style()->drawComplexControl(QStyle::CC_ComboBox, &comboBoxOption, painter);
}


но ячейки получаются пустыми.
Когда переопределяю так:
void ComboBoxDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
{
    QString value = index.data().toString();
    QStyleOptionComboBox comboBoxOption;
    comboBoxOption.currentText = value;
    comboBoxOption.rect = option.rect;
    comboBoxOption.state = QStyle::State_Enabled;
    QApplication::style()->drawControl(QStyle::CE_ComboBoxLabel, &comboBoxOption, painter);
}

тогда отоисовывается значение в ячейке, в обычном виде, но серым цветом.
Поскажите пожалуйста как сделать отрисовку. Спасибо.
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 27.4.2024, 17:39