Я использую таблицы стилей для всего приложения, чтобы изменить внешний вид QTableView. В то же время я хочу, чтобы некоторые заголовки столбцов имели жирный шрифт, в зависимости от текста заголовка. Для этого я наследовал QHeaderView и реализовал функцию paintSection:
class BoldHeaderView : public QHeaderView
{
Q_OBJECT
public:
BoldHeaderView( Qt::Orientation orientation, QWidget* parent = 0 ) : QHeaderView( orientation, parent ) { }
void addBoldColumn( QString column_name )
{
if ( !m_bold_columns.contains( column_name ) )
m_bold_columns.append( column_name );
}
protected:
void paintSection( QPainter* p_painter, const QRect& rect, int logicalIndex ) const
{
QFont bold_font = p_painter->font();
QString column_name = model()->headerData( logicalIndex, Qt::Horizontal, Qt::DisplayRole ).toString();
if ( m_bold_columns.contains( column_name ) )
bold_font.setBold( true );
p_painter->setFont( bold_font );
QHeaderView::paintSection( p_painter, rect, logicalIndex );
}
private:
QList<QString> m_bold_columns;
};
Затем я установил это как horizontalHeader QTableView:
BoldHeaderView* p_bold_header = new BoldHeaderView( Qt::Horizontal );
p_bold_header->addBoldColumn( "Foo" );
m_p_table_view->setHorizontalHeader( p_bold_header );
Моя таблица стилей выглядит так:
QTableView QHeaderView::section {
font-family: "Segoe UI";
background-color: white;
border-style: none;
}
И он применяется для всего приложения в основной функции:
QApplication app(argc, argv);
[...]
app.setStyleSheet( style_sheet );
Благодаря eyllanesc я обнаружил, что это конфликтует с таблицей стилей. Жирный шрифт всегда будет перезаписан тем, что там указано. Мне нужно найти способ объединить оба метода.
"QHeaderView::section {" "background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #616161, stop: 0.5 #505050, stop: 0.6 #434343, stop:1 #656565);" "color: white;" "padding-left: 4px;" "border: 1px solid #6c6c6c;" "}"
и работает: imgur.com/a/Eik1K, см. имя и идентификатор - person eyllanesc   schedule 22.09.2017