2010-05-04 3 views
0

Я использую Qwebkit, и мне нравится вставлять в таблицу html каждый ввод данных, который приходит последним в качестве первой записи (<tr><td>...my data ...</td></tr>) в таблицу. Вот мой код, это только пример:Как вставить последний вход в первую запись таблицы в QwebKit

ui.webView->page()->mainFrame()->setHtml("<html><body><p>HTML Table Test</p>" 
              "<table id=\"mainTable\" name=\"mainTable\" BORDER=1 BORDERCOLOR=RED></table>" 
              "</body></html>"); 
    QWebElement body = ui.webView->page()->mainFrame()->documentElement(); 
    QWebElement mainTable = ui.webView->page()->mainFrame()->findFirstElement("#mainTable"); 
    mainTable.appendInside ("<tr><td>1111111<\/td></\tr>");  ///<-- this is i like to be last in the end 
    mainTable.appendInside ("<tr><td>2222222<\/td></\tr>");  ///<-- this is i like to be in the middle 
    mainTable.appendInside ("<tr><td>3333333<\/td></\tr>");  ///<-- this is i like to be in the first 

Содержание записей приходят динамически, а не как я показываю здесь, так что я не могу сделать это жестко; Короче, мне нужен алгоритм LIFO здесь.

Как мне это сделать?

+0

Как ваши данные доступны в приложении? Это QVector? QList? Другая структура данных? – Lohrun

ответ

2

Метод QWebElement::appendInside добавляет параметр в конец веб-элемента. Метод QWebElement::prependInside добавляет параметр в начало веб-элемента.

Если мы имеем QWebElement *elt, содержащие пустую таблицу, такие как:

<table><table> 

создать следующую таблицу,

<table> 
    <tr><td>A</td></tr> 
    <tr><td>B</td></tr> 
    <tr><td>C</td></tr> 
</table> 

Вы можете использовать один из двух следующих методов, они эквивалентны.

Метод 1, с appendInside

elt->appendInside("<tr><td>A</td></tr>"); 
elt->appendInside("<tr><td>B</td></tr>"); 
elt->appendInside("<tr><td>C</td></tr>"); 

или метод 2, с preprendInside

elt->prependInside("<tr><td>C</td></tr>"); 
elt->prependInside("<tr><td>B</td></tr>"); 
elt->prependInside("<tr><td>A</td></tr>"); 

Использование prependInside или appendInside дает контроль над ФИФО или ЛИФО поведение вашего алгоритма.

+0

ОК, я думаю, я не объяснил .. содержание записей, созданных динамически, я не могу сделать это жестко. – user63898

+1

Тот факт, что данные не жестко закодированы, в данном случае не имеет значения, вы можете заменить строку на ваша собственная динамически сгенерированная строка. Я отредактировал свой ответ, чтобы подчеркнуть различия между используемым методом и методами, которые я предлагаю. – Lohrun

Смежные вопросы