WedX - журнал о программировании и компьютерных науках

Удалите вертикальные линии сетки QTableView

У меня есть QTableView, как показано ниже:

введите здесь описание изображения

Я хочу удалить все вертикальные линии из таблицы. Я попытался установить свойство gridline-color, эквивалентное background-color, но оно удалило все линии сетки.

Я хочу, чтобы горизонтальные линии сетки оставались, а вертикальные удалялись. Как я могу этого добиться?


  • какая часть кода?? 25.05.2016
  • таблица и ее свойства стиля. 25.05.2016
  • таблица создается в Qt Creator. у вас есть только код xml в qt... и я еще не определил какое-либо свойство стиля.... 25.05.2016

Ответы:


1

делегат.h

class QLineDelegate : public QStyledItemDelegate
{
    public:
    QLineDelegate(QTableView* tableView);

    protected:
    void paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const;

    private:
    QPen pen;
    QTableView* view;
};

делегат.cpp

QLineDelegate::QLineDelegate(QTableView* tableView)
{
    int gridHint = tableView->style()->styleHint(QStyle::SH_Table_GridLineColor, new QStyleOptionViewItemV4());
    QColor gridColor = static_cast<QRgb>(gridHint);
    pen = QPen(gridColor, 0, tableView->gridStyle());
    view = tableView;
}

void QLineDelegate::paint(QPainter* painter, const QStyleOptionViewItem& option,const QModelIndex& index)const
{
    QStyledItemDelegate::paint(painter, option, index);
    QPen oldPen = painter->pen();
    painter->setPen(pen);

    //draw verticalLine
    //painter->drawLine(option.rect.topRight(), option.rect.bottomRight());

    //draw horizontalLine
    //painter->drawLine(option.rect.bottomLeft(), option.rect.bottomRight());
    //above code, line have breakpoint, the following code can solve it well 

    QPoint p1 = QPoint(itemOption.rect.bottomLeft().x()-1,itemOption.rect.bottomLeft().y());
    QPoint p2 = QPoint(itemOption.rect.bottomRight().x()+1,itemOption.rect.bottomRight().y());
    painter->drawLine(p1, p2);
    painter->setPen(oldPen);
}

tableview.cpp

tableView->setShowGrid(false);
tableView->setItemDelegate(new QLineDelegate(tableView));
11.09.2016
  • Привет @Newbie.Dev, я вставляю код в Qt IDE, он показывает ошибку: TableLineDelegate.cpp:26:24: ошибка: использование необъявленного идентификатора 'itemOption', что мне делать? Спасибо ! 20.05.2021

  • 2

    Вы не можете. У QTableView нет возможности сделать это.

    Однако вы можете сделать что-то вроде установки свойства gridline-color на background-color (как вы это сделали) и затем установить границу для всех элементов вашего QTableView; поскольку вам нужны только горизонтальные линии сетки, это будет выглядеть так:

    QTableView::item{
        border-top : 1px solid black
        border-bottom : 1px solid black
    }
    
    25.05.2016

    3

    Используйте setStyleSheet() с QTableView и внутри этого задайте border-right-color и border-left-color цвет, который вы указали для цвета линии сетки.

    25.05.2016
    Новые материалы

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..

    ИИ в аэрокосмической отрасли
    Каждый полет – это шаг вперед к великой мечте. Чтобы это происходило в их собственном темпе, необходима команда астронавтов для погони за космосом и команда технического обслуживания..


    Для любых предложений по сайту: [email protected]