crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> QTextTable, Изменение рамки ячейки
Гость_Гость_Wlad_*_*
сообщение 12.11.2009, 8:21
Сообщение #1





Гости








    


В Qt 4.3 рамка таблицы отображалась тонкими чеными линиями. Тогда я просто смотрел возможности Qt. Сейчас решил использовать QTextTable, но оказалось, что в Qt 4.5.3 рамка отображается двойной серой линией. Все попытки отобразить границы ячейки таблицы с помощью ОДНОЙ черной не увенчались успехом. После всех эспериментов у меня возникли 2 вопроса:

1. Можно ли отображать границы ячейки одинарной линией ?
2. Можно ли границы одной ячейки отображать линиями разной толщины (как в Wordе) ?

Может кто разбирался с QTextTable ?

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
frg10
  опции профиля:
сообщение 12.11.2009, 13:04
Сообщение #2


Студент
*

Группа: Участник
Сообщений: 47
Регистрация: 8.11.2009
Из: Ростов-на-Дону
Пользователь №: 1213

Спасибо сказали: 5 раз(а)




Репутация:   2  


Может использовать CSS? Там для границ таблицы есть аттрибуты:
Цитата
border-color <color> Цвет границ для текстовых таблиц.
border-style none | dotted | dashed | dot-dash | dot-dot-dash | solid | double | groove | ridge | inset | outset Стиль границ для текстовых таблиц.

Раз
Два
Три
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Гость_*
сообщение 12.11.2009, 13:58
Сообщение #3





Гости








    


Цитата(frg10 @ 12.11.2009, 13:04) *
Может использовать CSS? Там для границ таблицы есть аттрибуты:
Цитата
border-color <color> Цвет границ для текстовых таблиц.
border-style none | dotted | dashed | dot-dash | dot-dot-dash | solid | double | groove | ridge | inset | outset Стиль границ для текстовых таблиц.

Раз
Два
Три


Это можно и без CSS :

   QTextTableFormat tableFormat;
  
   QBrush brush = tableFormat.borderBrush();
   brush.setColor(QColor(Qt::black));
   tableFormat.setBorderBrush(brush);    // Меняем цвет бордюра на черный

   QTextFrameFormat orderFrameFormat = cursor.currentFrame()->frameFormat();
   orderFrameFormat.setBorderStyle(QTextFrameFormat::BorderStyle_Solid);  // Меняем стиль бордюра


НО :
Бордюр ячейки состоит из двух рамок: внешней и внутренний (запустите демо программу из папки:
...\Qt_4_5\demos\textedit\release и увидите как выглидит таблица)
Внутренняя рамка всегда остается.

Спасибо.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Stanislaus
  опции профиля:
сообщение 12.11.2009, 15:02
Сообщение #4


Студент
*

Группа: Новичок
Сообщений: 17
Регистрация: 23.4.2008
Пользователь №: 156

Спасибо сказали: 0 раз(а)




Репутация:   0  


Я делал одну сплошную таким хаком.

QTextTableFormat vtf;
vtf.setBorder(1);
QBrush tfb;
tfb.setColor(Qt::black);
tfb.setStyle(Qt::SolidPattern);
vtf.setBorderBrush(tfb);
vtf.setCellPadding(0);
vtf.setCellSpacing(0);
vtf.setBorderStyle(QTextFrameFormat::BorderStyle_Solid);

// ...

QTextTable *tbl = cc.insertTable(q.size()+1, 11, vtf)


Только вот не могу никак справиться с артефактом, когда соседнии бордеры ячеек начинают отсоединяться друг от друга. Кто-нить встречал такое?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Гость_*
сообщение 12.11.2009, 18:37
Сообщение #5





Гости








    


Цитата(Stanislaus @ 12.11.2009, 15:02) *
Я делал одну сплошную таким хаком.

QTextTableFormat vtf;
vtf.setBorder(1);
QBrush tfb;
tfb.setColor(Qt::black);
tfb.setStyle(Qt::SolidPattern);
vtf.setBorderBrush(tfb);
vtf.setCellPadding(0);
vtf.setCellSpacing(0);
vtf.setBorderStyle(QTextFrameFormat::BorderStyle_Solid);

// ...

QTextTable *tbl = cc.insertTable(q.size()+1, 11, vtf)


Только вот не могу никак справиться с артефактом, когда соседнии бордеры ячеек начинают отсоединяться друг от друга. Кто-нить встречал такое?


Спасибо за подскаку!
У меня никаких артефактов нет. Делал так:

QTextTableFormat tableFormat;

QBrush brush = tableFormat.borderBrush();
brush.setColor(QColor(Qt::black));
tableFormat.setBorderBrush(brush);

tableFormat.setCellPadding(0);
tableFormat.setCellSpacing(0);

QVector<QTextLength> constraints;
constraints << QTextLength(QTextLength::FixedLength, /* здесь ширина столбца */ lh);
.....................................................
// столько раз, сколько надо столбцов
......................................................
tableFormat.setColumnWidthConstraints(constraints);
QTextCursor cursor(textEdit->textCursor());
table = cursor.insertTable(rows, columns, tableFormat);

У меня сейчас Qt 4.6 beta 1

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 22.12.2024, 12:08