开发者

How to set font Bold to a particular row in table widget

开发者 https://www.devze.com 2022-12-30 19:10 出处:网络
i want to set my font as bold in particular row开发者_C百科 column position of my tablewidget. I did like this but getting break.

i want to set my font as bold in particular row开发者_C百科 column position of my tablewidget. I did like this but getting break.

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

Please Help


I think everything is ok. Here what docs said:

void QTableWidgetItem::setFont ( const QFont & font )

Sets the font used to display the item's text to the given font.

Maybe your overviewTable const?

ADDED:

This variant works fine for my 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);


Maybe you are getting break because you didn't call setItem() to set an item for the cell (2, 2) before you use overviewTable->item(2,2). As the Qt document says,

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

Returns the item for the given row and column if one has been set; otherwise returns 0.

That is, your overviewTable->item(2,2) probably returns 0, thus causes a Segmentation fault in the setFont() call.

So your means to setting font is completely right. You just need to call setItem() at first as mosg's answer suggests.

ADDED:

if your overviewTable is a QTableWidget created in Qt Designer, then in the Designer a double-click on a cell (just to enter its editing mode, no need to actually enter anything) will have the effect of calling setItem() for that cell. Later in your code you can directly using the item() function without having to call setItem() first.

0

精彩评论

暂无评论...
验证码 换一张
取 消