Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > [Qt] QTable отрисовать границы


Автор: VirLena 5.6.2008, 16:16
В продолжении моей темы "Шапка в таблице QTable"
Поскольку в Qt я без малого месяц вот и возникают такие вопросы. В таблице я рисую свою шапку, сначала отключаю стандарные Header, затем в верхнии строки таблицы вставляю итемы, которые затем переопределяя функцию QTableItem::paint закрашиваю в нужный мне цвет, вот встал вопрос как теперь отрисовать границы данных итемов, чтоб шапка получилась объемной?  smile 


Автор: Elfebet 5.6.2008, 17:14
ну вообще-то 
Код

int w = this->width();
int h = this->height();
QPainter paiter;
painter.setPen(Qt::black);
painter.setBrush(Qt::white);
painter.drawRect(0,0,w-1,h-1);


будет белый фон с черной рамкой

а лучше покажи код как рисуеш

Автор: VirLena 6.6.2008, 09:04
Код

class MyTableItem : public QTableItem
{

public:

  MyTableItem(QTable *table, EditType et, const QString &text)
 {
 }

 void paint(QPainter *p, const QColorGroup &cg, const QRect &cr, bool selected)
 {
    QColorGroup cgNew(cg);
    cgnew.setColor(QColorGroup::Base, QColor(133,133,133));
    QTableItem::paint(p,cgNew,cr,selected);
 }
};


Эту функцию я использую для зарисовки всех моих итемов, которые используются в шапке таблицы, теперь к ним нужны границы  smile 

Автор: Elfebet 6.6.2008, 09:29
хм..... ну вставь перед или после QTableItem::paint(p,cgNew,cr,selected), этот код
Код

//p->setPen(Qt::black);
p->setPen(QPen(Qt::black, 2));
p->setBrush(QColor(0,0,0,0));
p->drawRect(0, 0, cr.width()-1, cr.height()-1);

Автор: VirLena 6.6.2008, 09:52
класс  smile 
правда отрисовало только внутренние границы ячеек, внешние проигнорировало

Автор: VirLena 13.6.2008, 16:08
кто знает как отрисовать и внешние границы итемов? или почему они не отрисовываются? smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)