perplessi da questa omissione - ma nella classe di Qt QAbstractItemView, è possibile impostare un QAbstractItemDelegate (cioè QItemDelegate o QStyledItemDelegate) per l'intera vista, una singola riga o una singola colonna, usando i metodi setItemDelegate*
. Inoltre, è possibile interrogare l'elemento delegato per una singola cella, con QAbstractItemView::itemDelegate(const QModelIndex&)
, insieme al delegato per righe e colonne. e l'intera vista. Ma sembra che non ci sia modo di impostare un elemento delegato a una singola cella. Mi sto perdendo qualcosa? Qualche ragione dovrebbe essere?Come impostare un delegato per una singola cella nella visualizzazione delle voci Qt?
6
A
risposta
4
No, non è possibile impostare l'elemento delegato solo per una cella o una colonna, ma è possibile impostare facilmente l'oggetto delegato per l'intero widget e scegliere in quale cella, colonna o riga si desidera utilizzare la pittura personalizzata o qualcosa del genere.
Ad es.
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);
}
Potete trovare qualche informazione in più here
2
io raccomanderei reimplementare funzione createEditor invece:
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;
}
Problemi correlati
- 1. Impostazione voci nella casella combinata Qt
- 2. Come impostare il valore nella cella nella griglia in extjs
- 3. come impostare un delegato per la vista tabella
- 4. Come selezionare una singola cella in un datagrid WPF?
- 5. Impostare colspan/rowspan per una cella
- 6. Come impostare un delegato in una classe diversa
- 7. Come impostare un colspan in una cella Android GridView
- 8. Come posso impostare dove un'app Qt trova un modulo Qt?
- 9. Aggiungere voci Info.plist in Qt
- 10. Come impostare un percorso relativo per le DLL Qt quando si rilascia un progetto Qt?
- 11. disabilitazione e oscuramento delle voci di elenco
- 12. Come posso aggiungere due righe in una singola cella pdf?
- 13. Come impostare una cella statica UITableView su un'altezza personalizzata?
- 14. UITableView, sostituire la visualizzazione cella sulla selezione
- 15. Excel/VBA: passaggio di una singola cella come argomento
- 16. visualizzazione di visualizzazione nella parte superiore della barra delle azioni
- 17. Come utilizzare i delegati per comunicare i dati da una cella personalizzata a un'etichetta nella visualizzazione genitore
- 18. Visualizzazione immagine jpg Qt
- 19. Come impostare il delegato con uno storyboard
- 20. Cambiare altezza UITableView singola cella
- 21. È possibile impostare la textLabel di una cella personalizzata?
- 22. API di dati di YouTube: recupero di più voci video per ID in una singola richiesta
- 23. Come aggiungere una visualizzazione di immagini personalizzata nella cella tableview in Swift?
- 24. Come posso impostare un'ombra in ogni cella di un ListView?
- 25. Riduci il riempimento o margine della cella di una tabella di visualizzazione
- 26. R pacchetto XLSX: formattazione della cella singola
- 27. Visualizzazione tabella iOS Aggiorna cella
- 28. Delegato NSTextFieldCell?
- 29. Che cos'è un modo semplice per impostare il colore della cella di sfondo per una CustomGrid?
- 30. Come visualizzare più video in visualizzazione singola?
Questa è la mia prima volta con i delegati - il tuo metodo, se il delegato I set è una casella di selezione, la modifica verrebbe visualizzata solo per la colonna 1? La gamma di spinbox non sarebbe in vigore per le altre colonne? –
Tutte le cose interesseranno solo la colonna numero 1. Tutte le altre colonne saranno saty come erano prima. – Blood
OK, ma con questo metodo è possibile avere più di un tipo di delegato specifico della cella? Potresti avere una spinbox a (0,2) e una barra di avanzamento a (3,1) con delegati di default ovunque? –