2010-05-20 102 views
2

我想将我的字体设置为粗体,特别是我的tablewidget的行列位置。 我这样做,但得到了休息。如何将字体粗体设置为表格小部件中的特定行

QFont font("Helvetica", 12, QFont::Bold); 
overviewTable->item(2,2)->setFont(font); 

请帮助

+0

什么是overviewTable?它是QTableWidget或QTableView? – mosg 2010-05-20 09:36:53

回答

4

我觉得一切都很好。这里是什么文档说:

void QTableWidgetItem::setFont (const QFont & font) 

设置用于显示该项目的文本的字体给定的字体。

也许你的overviewtableTable const?

增加:

这种变异正常工作对我的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

也许你得到休息,因为你没叫setItem()设定的项目为单元(2, 2)在使用overviewTable->item(2,2)之前。由于Qt的文件说,

QTableWidgetItem * QTableWidget的::项目(INT行,诠释列)常量

返回给定行是否已设置列的项目; 否则返回0。

也就是说,你可能overviewTable->item(2,2)返回0,从而引起setFont()呼叫Segmentation fault

所以你的手段来设置字体是完全正确的。刚开始,你只需要调用setItem()就可以了。

新增:

如果您overviewTable在Qt Designer创建一个QTableWidget,然后在设计器上双击单元格(刚刚进入它的编辑模式,无需实际输入任何东西)将具有为该单元呼叫setItem()的效果。稍后在代码中,您可以直接使用item()函数,而无需先致电setItem()

相关问题