2010-05-20 10 views

Répondre

4

Je pense que tout est ok. Voici ce que dit docs:

void QTableWidgetItem::setFont (const QFont & font) 

Définit la police utilisée pour afficher le texte de l'article à la police donnée.

Peut-être que votre aperçuTable const?

AJOUTEE:

Cette variante fonctionne très bien pour mon Qt 4.6:

tableWidget = new QTableWidget(12, 3, this); 

for (int i = 0; i < 12; i++) { 
    for (int j = 0; j < 3; j++) { 
     QTableWidgetItem *newItem = new QTableWidgetItem(tr("%1").arg(
      (i+1)*(j+1))); 
     tableWidget->setItem(i, j, newItem); 
    } 
} 

QFont font; 
font.setBold(true); 

tableWidget->item(2, 2)->setFont(font); 
0

Peut-être que vous obtenez pause parce que vous n'avez pas appelé setItem() pour définir un élément de la cellule (2, 2) avant d'utiliser overviewTable->item(2,2). Comme le document Qt dit,

QTableWidgetItem * QTableWidget :: item (int row, colonne int) const

Renvoie l'élément de la ligne et de la colonne donnée si l'on a été fixé; sinon retourne 0.

C'est, votre overviewTable->item(2,2) retourne probablement 0, provoque ainsi un Segmentation fault dans l'appel setFont().

Votre moyen de définir la police est donc tout à fait correct. Il suffit d'appeler setItem() au début, comme le suggère la réponse de mosg.

AJOUTÉE:

si votre overviewTable est un QTableWidget créé dans Qt Designer, puis dans le concepteur un double-clic sur une cellule (juste pour entrer dans le mode d'édition, pas besoin d'entrer quoi que ce soit) sera ont pour effet d'appeler setItem() pour cette cellule. Plus tard dans votre code, vous pouvez directement utiliser la fonction item() sans avoir à appeler le setItem() en premier.