2014-01-06 4 views
1

Я использую Qt tableWidget, чтобы отобразить список элементов с столбцами. Однако между элементами в этом списке есть огромное пространство.Как изменить интервал Qt tableWidget items

Как изменить интервал, чтобы элементы (только текст) были ближе друг к другу?

Пример экрана:

enter image description here

ответ

0

Я хотел бы попробовать использовать

недействительных QTableView :: resizeRowToContents (Int строки) [слот]

Изменяет данную строку на основе размера намеках делегата, используемых для отображения каждого элемента в строке.

Он ведет себя по умолчанию, как и ожидалось для моего варианта использования, увеличивая строку в зависимости от видимого изображения, сокращаясь, чтобы соответствовать тексту в противном случае.

К сожалению, я не исследовал более точный контроль на фактический размер вы можете достичь с помощью рендеринга делегата

+0

Вы также можете установить это автоматически, используя свойства QHeaderView. QHeaderView * header = tableView-> verticalHeader(); header-> setResizeMode (QHeaderView :: ResizeToContents); – RobbieE

0

Вероятно, самый простой подход, чтобы скрыть сетку и перекрашивать его размера вам нужно. Для этого вам нужно создать собственный класс, который наследует QTableWidget и определяет пользовательский paintEvent. Пример код:

void paintEvent(QPaintEvent *event) 
{ 
    QTableWidget::paintEvent(event); 
    QPainter painter(viewport()); 

    for (int i = 0; i < columnCount(); ++i) 
    { 
     int start = horizontalHeader()->sectionViewportPosition(i); 
     QPoint from = QPoint(start, 0); 
     QPoint to = QPoint(start, height()); 

     painter.drawLine(from, to); 
     start += horizontalHeader()->sectionSize(i) - 10; 
     from = QPoint(start, 0); 
     to = QPoint(start, height()); 
     painter.drawLine(from, to); 
    } 

    for (int j = 0; j < rowCount(); ++j) 
    { 
     int start = verticalHeader()->sectionViewportPosition(j); 
     QPoint from = QPoint(0, start); 
     QPoint to = QPoint(width(), start); 

     painter.drawLine(from, to); 
     start += verticalHeader()->sectionSize(j) - 10; 
     from = QPoint(0, start); 
     to = QPoint(width(), start); 
     painter.drawLine(from, to); 
    } 
} 
Смежные вопросы