2010-05-20 2 views
2

Я хочу, чтобы мой шрифт был выделен полужирным шрифтом в определенной позиции столбца столбца моего табличного виджета. Мне это нравилось, но мне хотелось отдохнуть.Как установить шрифт Полужирный для определенной строки в виджету таблицы

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

Пожалуйста, помогите

+0

Что такое обзор? Это QTableWidget или QTableView? – mosg

ответ

4

Я думаю, что все в порядке. Здесь, где указано:

void QTableWidgetItem::setFont (const QFont & font) 

Устанавливает шрифт, используемый для отображения текста предмета данному шрифту.

Возможно, ваш обзорТаблица 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) Const

Возвращает элемент для данной строки и столбца, если один был установлен; в противном случае возвращает 0.

То есть, ваш overviewTable->item(2,2) вероятно, возвращает 0, что вызывает в setFont() вызова в Segmentation fault.

Итак, ваши средства для установки шрифта совершенно правильные. Вам просто нужно сначала вызвать setItem(), как указывает ответ mosg.

ДОБАВЛЕНО:

если свой контекстуальный overviewTable является QTableWidget создан в Qt Designer, а затем в конструкторе двойным щелчком мыши на ячейке (только для входа в режим редактирования, не нужно на самом деле ничего вводить) будет имеют эффект вызова setItem() для этой ячейки. Позже в вашем коде вы можете напрямую использовать функцию item() без необходимости сначала позвонить setItem().