Je travaille avec une interface graphique QT. J'implémente un contrôle d'édition hexadécimal simple en utilisant un QTableView. Mon idée initiale est d'utiliser une table avec dix-sept colonnes. Chaque ligne de la table aura 16 octets hexadécimaux, puis une représentation ASCII de ces données dans la dix-septième colonne. Idéalement, je voudrais modifier/définir le style de la dix-septième colonne pour ne pas avoir de lignes en haut et en bas de chaque cellule pour donner au texte une apparence fluide. Quelle est la meilleure façon d'aborder cela en utilisant QTableView?Comment puis-je définir le style de ligne d'une cellule spécifique dans un QTableView?
Répondre
Je pourrais penser à quelques façons de faire ce dont vous avez besoin; les deux incluraient le dessin d'une grille personnalisée car il semble qu'il n'y ait pas de moyen simple de se connecter à la routine de peinture de grille de la classe QTableView:
1.Éteignez la grille standard pour votre grille treeview en appelant setShowGrid (false) et dessinez lignes de grille pour les cellules qui en ont besoin en utilisant délégué article. Voici un exemple:
// custom item delegate to draw grid lines around cells
class CustomDelegate : public QStyledItemDelegate
{
public:
CustomDelegate(QTableView* tableView);
protected:
void paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const;
private:
QPen _gridPen;
};
CustomDelegate::CustomDelegate(QTableView* tableView)
{
// create grid pen
int gridHint = tableView->style()->styleHint(QStyle::SH_Table_GridLineColor, new QStyleOptionViewItemV4());
QColor gridColor = static_cast<QRgb>(gridHint);
_gridPen = QPen(gridColor, 0, tableView->gridStyle());
}
void CustomDelegate::paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const
{
QStyledItemDelegate::paint(painter, option, index);
QPen oldPen = painter->pen();
painter->setPen(_gridPen);
// paint vertical lines
painter->drawLine(option.rect.topRight(), option.rect.bottomRight());
// paint horizontal lines
if (index.column()!=1) //<-- check if column need horizontal grid lines
painter->drawLine(option.rect.bottomLeft(), option.rect.bottomRight());
painter->setPen(oldPen);
}
// set up for your tree view:
ui->tableView->setShowGrid(false);
ui->tableView->setItemDelegate(new CustomDelegate(ui->tableView));
2.Créez un descendant QTableView et remplacer la méthode paintEvent. Vous pouvez soit dessiner votre propre grille, soit laisser la classe de base la dessiner, puis peindre des lignes horizontales sur la grille en utilisant la couleur d'arrière-plan de tableview.
espérons que cela aide, salutations
- 1. NPOI définir le style de cellule
- 2. Comment définir le style de cellule en utilisant OpenOffice :: OODoc?
- 3. Comment définir une ligne ou une cellule spécifique dans un gridview (vb 2008)
- 4. Définir le style de ligne sur la grille de jquery
- 5. Comment définir le remplissage des cellules QTableView via CSS?
- 6. Style séparateur de cellule
- 7. Comment désactiver le mode d'édition dans QTableView?
- 8. le style d'une ligne spécifique de flex dataGrid
- 9. Comment déclencher le mode d'édition d'un élément dans un QTableView?
- 10. Affichage de plusieurs icônes dans une seule cellule d'un QTableView
- 11. QTableView: comment créer correctement un QModelIndex?
- 12. Définir InputBindings dans le style
- 13. récupérer le texte dans une cellule spécifique dans un QTableWidget?
- 14. Définir une police spécifique dans un styles.xml
- 15. QTableView - ne pas autoriser l'utilisateur à modifier la cellule
- 16. Comment ouvrir une URL dans un QTableView
- 17. Comment appliquer un style gras à un mot spécifique dans un fichier Excel en utilisant Python?
- 18. Qt/C++: obtention des données à une certaine cellule dans un QTableView
- 19. jQgrid In-Line Edit: -Comment définir un type de données spécifique à une cellule particulière dans jQgrid?
- 20. Silverlight: Supprimer le contenu d'une cellule spécifique dans une grille
- 21. WPF - Comment définir les enfants de Grid dans un style?
- 22. comment définir le style par javascript dans IE immédiatement
- 23. GWT PagingScrollTable (définir un style sur une cellule particulière de la table d'en-tête)
- 24. Comment définir le style par programme
- 25. Comment implémenter des lignes gelées dans un QTableView
- 26. Comment lire et définir une valeur d'une cellule spécifique dans une grille ExtJS?
- 27. définir défilement dernier UItableview cellule
- 28. Incorporation d'un contrôle dans un QTableView?
- 29. Besoin d'utiliser jQuery.find pour trouver l'élément avec un style spécifique
- 30. Comment copier un élément de style en ligne dans IE?
Je vais lui donner un coup de main. Merci pour le conseil. Ce sera difficile. Je finirai probablement par créer mon propre widget HexEdit pour cacher ce désordre. Le résultat final devrait être agréable, cependant. Merci. –