crossplatform.ru

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

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





Гости








    


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

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

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

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
molchanoviv
  опции профиля:
сообщение 12.11.2009, 8:53
Сообщение #2


Старейший участник
****

Группа: Сомодератор
Сообщений: 597
Регистрация: 18.7.2008
Из: Саратов
Пользователь №: 238

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




Репутация:   5  


никогда не работал с текстовыми таблицами в Qt, но может QTextTableFormat


Сообщение отредактировал molchanoviv - 12.11.2009, 8:59
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Гость_*
сообщение 12.11.2009, 9:10
Сообщение #3





Гости








    


Цитата(molchanoviv @ 12.11.2009, 8:53) *
никогда не работал с текстовыми таблицами в Qt, но может QTextTableFormat


С помощью QTextTbleFormat изменяеются границы ВСЕЙ таблицы сразу.
Но даже для всей таблици, сделать так, чтобы граници отображались ОДНОЙ линией мне не удалось !
Я вроде бы перепробовал все варианты. Может чего не понимаю ?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
frg10
  опции профиля:
сообщение 12.11.2009, 13:04
Сообщение #4


Студент
*

Группа: Участник
Сообщений: 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
Сообщение #5





Гости








    


Цитата(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
Сообщение #6


Студент
*

Группа: Новичок
Сообщений: 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
Сообщение #7





Гости








    


Цитата(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

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Alexander_*
сообщение 23.12.2010, 19:53
Сообщение #8





Гости








    


Цитата(Гость @ 12.11.2009, 18:37) *
Цитата(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


Могу добавить, что если надо получить ВСЕ-ТАКИ ОДИНАРНУЮ линию, то можно вместо
tableFormat.setCellSpacing(0);
использовать
tableFormat.setCellSpacing(-1);

( в данный момент использую Qt 4.6.3 )

П.С. Спасибо всем за пояснения!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




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