31 votes

Comment changer la hauteur de ligne dans QTextTable

Je suis en train d'écrire la complexité de l'éditeur de texte enrichi, des dérivés de la QTextEdit classe. Il doit être capable d'insérer, redimensionner, et appliquer différentes mise en forme intégré tables.

J'ai trouvé la fonction pour l'installation des largeurs de colonne (setColumnWidthConstraints). Mais il n'est pas l'un à l' change _rows_ heights.

Est-il un moyen pour y parvenir?

Exemple de code:

void CustomTextEdit::insertTable (int rows_cnt, int columns_cnt)
{
    QTextCursor cursor = textCursor ();
    QTextTableFormat table_format;
    table_format.setCellPadding (5);

    // TODO: This call just changed the frame border height, not table itself.
    //table_format.setHeight (50);

    // Setup columns widths - all is working perfectly.
    QVector <QTextLength> col_widths;
    for (int i = 0; i < columns_cnt; ++i)
        col_widths << QTextLength (QTextLength::PercentageLength, 100.0 / columns_cnt);
    table_format.setColumnWidthConstraints (col_widths);

    // ...But there is no similar function as setRowHeighConstraints for rows!

    // Insert our table with specified format settings
    cursor.insertTable (rows_cnt, columns_cnt, table_format);
}

1voto

Brett Caswell Points 366

il semble que vous pouvez utiliser le setHTML(QString) ou insertHTML(QString) de fonctions pour insérer une feuille de style.

Lors de l'utilisation de cette fonction avec un style de la feuille, la feuille de style ne appliquer pour le bloc en cours dans le document. Pour appliquer un style feuille dans un document, utilisez QTextDocument::setDefaultStyleSheet() au lieu de cela.

ref: http://harmattan-dev.nokia.com/docs/platform-api-reference/xml/daily-docs/libqt4/qtextedit.html#insertHtml

appart de l'aide de cales....selon http://harmattan-dev.nokia.com/docs/platform-api-reference/xml/daily-docs/libqt4/richtext-html-subset.html vous pouvez définir la déclaration de police.

Qt semble avoir ciblé le CSS2.1 cahier des charges, qui est suivie.. http://www.w3.org/TR/CSS2/fonts.html#propdef-font

avez-vous essayé la spécification de la police dans la ligne de la table.

passer à la chaîne suivante à l'aide insertHTML, où cette chaîne est benoit xvi a déclaré qu'un QString

<style>
table > tr {font-size: normal normal 400 12px/24px serif;}
</style>

1voto

bks Points 1136

Si vous voulez juste pour rendre les lignes plus grand que le texte de leur hauteur sera nécessaire, vous pourriez essayer de l'insertion d'une 0xN image transparente dans la première cellule de la ligne (ou 1xN si Qt ne te laisserai pas faire de largeur nulle).

Il pourrait également être possible de mettre la table de la cellule supérieure rembourrage avec QTextTableCellFormat::setTopPadding() ou peut-être définir la marge supérieure avec QTextBlockFormat::setTopMargin(). Mais les deux rembourrage et les marges sont ajoutées à la disposition du texte de la hauteur autant que je sache, donc aucun des deux n'est très bon pour l'établissement d'une hauteur absolue.

Avez-vous regardé Calligra? Ses libs/kotext et libs/textlayout bibliothèques de mettre en œuvre une coutume QAbstractTextDocumentLayout avec beaucoup plus riche support de table que QTextEdit.

0voto

waddlesplash Points 504

Insérer une feuille de style à l'aide de this->document()->setDefaultStyleSheet("css goes here");

Voir http://qt-project.org/doc/qt-5.0/qtwidgets/qtextedit.html#document-prop et http://qt-project.org/doc/qt-5.0/qtgui/qtextdocument.html#defaultStyleSheet-prop

(des liens vers Qt5 docs, mais ces fonctions sont disponibles dans Qt4 aussi.)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X