LINUX.ORG.RU

Ширина столбцов в процентах

 ,


0

1

Привет, ЛОР.

Приведённое ниже – сильно покоцанный вариант HTML, сгенерованного кутешным классом QTextDocumentWriter (эффект, о котором идёт речь, проявляется как на полном, так и на покоцанном файле).

<html>
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /></head>
<body>
<table border="1" cellspacing="2">
<tr>
<td width="12%">
<p>Дата</p></td>
<td width="10%">
<p>Сумма</p></td>
<td width="21%">
<p>Категория</p></td>
<td width="21%">
<p>Подкатегория</p></td>
<td width="35%">
<p>Описание</p></td></tr>
<tr>
<td rowspan="2">
<p>14.06.2005</p></td>
<td>
<p>14.00</p></td>
<td rowspan="2">
<p>Транспорт</p></td>
<td rowspan="2">
<p>Маршрутное такси</p></td>
<td></td></tr>
</table>
</body>
</html>

Сумма ширин всех столбцов в процентах около 100%. Но единственный браузер, который показывает эту таблицу во всю ширину окна – это «маргинальный» Netsurf.

Firefox и Chromium размещают таблицу процентов на 40 от ширины окна. Оно, может, и не так безобразно выглядело бы, но в полном варианте у меня над таблицей ещё и заголовок, которому я указываю расположиться по центру окна. И он действительно располагается по центру, оказываясь сильно правее таблицы.

Я чего-то не понимаю?

P.S. rowspan-ы убирал, эффект тот же.

★★★★★

Последнее исправление: hobbit (всего исправлений: 3)

это «маргинальный» Netsurf

Даже консольный chawan не показывает таблицу на ширину консольного хоста. Задайте значение ширины для table явно. Может ошибаюсь, но раньше width="100%" было по-умолчанию.

dmitry237 ★★★★★
()
Ответ на: комментарий от futurama

Добавил. Работает. :(

И что теперь, таки с багрепортом в Qt (чей класс такое создаёт) долбиться?

P.S. Хотя сначала ещё раз внимательно посмотрю на свойства самого QTextTable, м.б. это там задаётся.

hobbit ★★★★★
() автор топика
Последнее исправление: hobbit (всего исправлений: 2)

Влепил самой таблице setAlignment(Qt::AlignHCenter). Полностью проблему не решило, но хотя бы выглядит относительно пристойно.

Однако, есть у QTextTable и заимствованный у QTextFrame метод setFrameFormat(). А ему можно сделать setWidth(), тоже в процентах. …После этого на setFrameFormat() программа начала падать. :(

P.S. А вот если сначала frameFormat извлечь из таблицы, потом сделать ему setWidth() и присвоить обратно – работает! (Причём обязательно после задания ширин столбцов.) Очень сильное колдунство!

hobbit ★★★★★
() автор топика
Последнее исправление: hobbit (всего исправлений: 1)

Пустая строка (два раза Enter) начинает новый абзац. Знак '>' в начале абзаца выделяет абзац курсивом цитирования.
Внимание: прочитайте описание разметки Markdown.
Используйте Ctrl-Enter для размещения комментария