Aksine, bu ihmal çapraşık - ama QT'ın QAbstractItemView sınıfında, ayarlamak mümkün bir QAbstractItemDelegate (yani, QItemDelegate veya QStyledItemDelegate) setItemDelegate*
yöntemlerle bütün görünümü, tek bir sıra ya da tek bir sütun için. Ayrıca, tek bir hücre için öğe temsilcisi, satırlar, sütunlar için temsilci ile birlikte, QAbstractItemView::itemDelegate(const QModelIndex&)
ile sorgulanabilir. ve tüm görüş. Ancak, kümesinin bir öğe temsilcisine tek bir hücreye giden yolu yoktur. Bir şey mi eksik? Bunun olması için bir sebep var mı? Yalnızca bir hücre ya da bir sütun için öğe temsilci ayarlamak olamaz ama tefriş bütün widget için öğe temsilci ayarlayabilir ve hangi hücre, sütun seçebilir ya da özel boyama ya da bir şey kullanmak istediğiniz satır imkan yokQt öğesi görünümünde tek bir hücre için temsilci nasıl ayarlanır?
6
A
cevap
4
. ör için
void WidgetDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option,
const QModelIndex &index) const
{
if (index.column() == 1)
{
// ohh it's my column
// better do something creative
}
else // it's just a common column. Live it in default way
QItemDelegate::paint(painter, option, index);
}
Biraz daha bilgi bulabilirsiniz here
2
yerine createEditor fonksiyonunu reimplementing öneririm
:
QWidget * WidgetDelegate::createEditor(
QWidget *parent,
const QStyleOptionViewItem &,
const QModelIndex &index) const
{
QWidget *widget = 0;
if (index.isValid() && index.column() < factories.size())
{
widget = factories[index.column()]->createEditor(index.data(Qt::EditRole).userType(), parent);
if (widget)
widget->setFocusPolicy(Qt::WheelFocus);
}
return widget;
}
Bu delege kullanarak ilk kez - senin yöntemine, temsilci eğer ben ayarlanmış bir spinbox, sadece sütun 1 için eğirme kutusunu ortaya çıkarır mı? Spinbox aralığı diğer sütunlar için geçerli olmaz mı? –
Her şey sadece sütun numarası 1'i etkileyecektir. Diğer tüm sütunlar daha önce olduğu gibi satir. – Blood
Tamam, ama bu yöntemde birden fazla hücreye özgü temsilci türü olması mümkün mü? Herhangi bir yerde varsayılan delegelerle (0,2) ve (3,1) 'de bir ilerleme çubuğunda bir dönüş kutusuna sahip olabilir misiniz? –