Как установить шрифт Bold для определенной строки в виджете таблицы - PullRequest
2 голосов
/ 20 мая 2010

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

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

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

Ответы [ 2 ]

4 голосов
/ 20 мая 2010

Я думаю, что все в порядке. Вот что сказали документы:

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 голосов
/ 30 июля 2016

Возможно, вы получаете перерыв, потому что вы не позвонили setItem(), чтобы установить элемент для ячейки (2, 2), прежде чем использовать overviewTable->item(2,2). Как сказано в документе Qt,

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

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

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

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

ДОБАВЛЕНО:

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

...