【问题标题】:How to set font Bold to a particular row in table widget如何将字体粗体设置为表格小部件中的特定行
【发布时间】:2010-05-20 09:29:40
【问题描述】:

我想在我的表格小部件的特定行列位置将我的字体设置为粗体。 我确实喜欢这样,但会休息。

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

请帮忙

【问题讨论】:

  • 什么是overviewTable?是 QTableWidget 还是 QTableView?

标签: qt qt4 qt-creator


【解决方案1】:

我认为一切都很好。这是文档所说的:

void QTableWidgetItem::setFont ( const QFont & font )

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

也许你的 overviewTable 是常量?

添加:

这个变体适用于我的 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);

【讨论】:

    【解决方案2】:

    也许您正在休息,因为您在使用 overviewTable-&gt;item(2,2) 之前没有调用 setItem() 为单元格 (2, 2) 设置项目。正如 Qt 文档所说,

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

    如果已设置,则返回给定行和列的项目; 否则返回 0。

    也就是说,您的 overviewTable-&gt;item(2,2) 可能返回 0,因此会在 setFont() 调用中导致 Segmentation fault

    所以你设置字体的方法是完全正确的。正如 mosg 的回答所暗示的那样,您只需首先调用 setItem() 即可。

    添加:

    如果你的overviewTable是在Qt Designer中创建的QTableWidget,那么在Designer中双击一个单元格(只是进入它的编辑模式,不需要实际输入任何东西)就会有调用的效果setItem() 用于该单元格。稍后在您的代码中,您可以直接使用item() 函数,而无需先调用setItem()

    【讨论】:

      猜你喜欢
      • 2019-11-07
      • 1970-01-01
      • 2021-01-14
      • 2020-09-24
      • 2011-03-30
      • 1970-01-01
      • 1970-01-01
      • 2018-07-29
      • 2015-09-23
      相关资源
      最近更新 更多