2016-03-22 11 views
2

У меня есть объект QTableView с горизонтальным headerView, (по вертикали я скрыл). Я установил setShowGrid (false), чтобы удалить сетку из qtableView, но как я могу удалить границы разделителя между QTableView и его горизонтальным заголовком. Я пробовал:Как удалить горизонтальные границы из QHeaderView

tableView->horizontalHeader()->setFrameShape(QFrame::VLine) 

но без успеха. спасибо

ответ

2

OK Я переопределен метод paintSection и теперь у меня есть то, что я хотел/

void MyHeaderView::paintSection(QPainter *painter, const QRect &rect, int logicalIndex) const 
{ 
    QString data = model() -> headerData(logicalIndex, orientation(), Qt::DisplayRole).toString(); 

    QFontMetrics fm = painter -> fontMetrics(); 

    painter -> fillRect(rect, QBrush(QColor("white"))); 
    painter -> drawText(rect, Qt::AlignLeft, data); 

    painter -> drawLine(rect.topRight(), rect.bottomRight()); 
} 
1

Если вы имеете в виду ту же «границу», что и я, это часть текущего стиля. Итак, если вы хотите избавиться от него, вы должны определить свой собственный стиль, используя таблицы стилей .

Вот пример:

QString style = R"(QHeaderView::section { 
         border: 1px solid black; 
         border-bottom: 0px;    
        } 
       )"; 

tableView->horizontalHeader()->setStyleSheet(style); 

Эта таблица стилей определяет общую границу раздела заголовка к ширине 1px черной линией и скрывает нижнюю границу.

Примечание: Я использую C++ 11 строковый литерал здесь, поэтому не путайте. Это просто строка.

+0

Спасибо за ваш ответ, но есть одна проблема, я не могу использовать метод setStyleSheet(), вы не знаете, как делать то же самое с командами C++, без css? – tokafr

+0

Боюсь, что в Qt API нет метода для переключения нижней границы заголовка. Если вы не можете использовать таблицы стилей, есть еще один вариант: переопределить метод QHeaderView :: paintSection(). – Tomas

 Смежные вопросы

  • Нет связанных вопросов^_^