2013-03-20 13 views
31

Sto scrivendo il complicato editor di testo RTF derivato dalla classe QTextEdit. Deve essere in grado di inserire, ridimensionare e applicare varie formattazioni alle tabelle incorporate.Come modificare l'altezza della riga in QTextTable

Ho trovato la funzione per impostare le larghezze delle colonne (setColumnWidthConstraints). Ma non c'è nessuno a change _rows_ heights.

Esiste un modo per raggiungere questo obiettivo?

codice Esempio:

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); 
} 
+0

si potrebbe usare QTextFrameFormat :: setHeight (qreal height) –

+1

@Cool_Coder Questo ha appena modificato l'altezza di _all_ il frame (cioè dove verrà mostrato il bordo). Ma ho bisogno di specificare l'altezza per ogni riga separata della tabella. – eraxillan

+0

puoi mostrare qualche codice in modo che io possa commentarlo? –

risposta

1

sembra che è possibile utilizzare le funzioni setHTML (QString) o insertHTML (QString) per inserire un foglio di stile.

Quando si utilizza questa funzione con un foglio di stile, il foglio di stile si applicherà solo al blocco corrente nel documento solo a . Per applicare un foglio di stile in un documento, utilizzare invece QTextDocument :: setDefaultStyleSheet() .

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

appart di utilizzare spessori .... Secondo http://harmattan-dev.nokia.com/docs/platform-api-reference/xml/daily-docs/libqt4/richtext-html-subset.html è possibile impostare la dichiarazione del carattere.

Qt sembra aver mirato alle specifiche CSS 2.1, che è come seguito .. http://www.w3.org/TR/CSS2/fonts.html#propdef-font

Hai provato specificando il tipo di carattere all'interno della riga della tabella.

assumere la seguente stringa usando insertHTML, dove questa stringa viene delcared come QString

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

Se si desidera solo per fare le righe alti che la loro altezza del testo richiederebbe, si potrebbe provare a inserire una 0xn trasparente immagine nella prima cella della riga (o 1xN se Qt non ti consente di fare larghezza zero).

Potrebbe anche essere possibile impostare il riempimento superiore della cella della tabella con QTextTableCellFormat :: setTopPadding() o impostare il margine superiore con QTextBlockFormat :: setTopMargin(). Ma sia il padding che i margini vengono aggiunti all'altezza di layout del testo AFAIK, quindi nessuno di questi è molto buono per impostare un'altezza assoluta.

Hai guardato Calligra? Le sue librerie libs/kotext and libs/textlayout implementano un QAbstractTextDocumentLayout personalizzato con un supporto di tabella molto più ricco rispetto a QTextEdit.

Problemi correlati