QML, TextArea показывают json данные, но не могут отображать \ r \ n - PullRequest
0 голосов
/ 27 марта 2020

В QML я использую TextArea show json данные:

`TextArea
 {
  id:oldJson
  width: parent.width * 0.4
  height: parent.height
  textFormat: TextEdit.RichText
  text: "<p style='color:red'>"+initDataStr+"</p>"      
//initDataStr is json data like :  initDataStr = JSON.stringify(initDataJson)
}`

Я хочу, чтобы TextArea показывалось как:

{ "z1_spindle_speed": { "type": "int", "value": 6000 }, "z2_spindle_speed": { "type": "int", "value": 6000 }, .... } Но результат:

"{\r\n \"z1_spindle_speed\": \r\n\t{\r\n\t\t\"type\": \"int\",\r\n \"value\": 6000\r\n },\r\n\t\"z2_spindle_speed\": \r\n\t{\r\n \"type\": \"int\",\r\n \"value\": 6000\r\n },....

Что мне делать?

1 Ответ

0 голосов
/ 27 марта 2020

Есть две проблемы, которые, по вашему предположению, будут напечатаны в несколько строк.

1) стандарт состоит в том, чтобы не печатать красиво. Вы можете добавить параметр spacer в соответствии с этой документацией

initDataStr = JSON.stringify(initDataJson, null, '\t')

2) Вы используете TextEdit.RichtText, который переименовывается HTML. В HTML переводы строк, обильные пробелы и другие пробелы обрабатываются умно, в основном это означает, что они не печатаются. Вы можете использовать тег <pre> для этого:

<code>text: "<pre style='color:red'>"+initDataStr+"
"

В заключение вы должны иметь:

<code>TextArea
{
    id:oldJson
    width: parent.width * 0.4
    height: parent.height
    textFormat: TextEdit.RichText
    text: "<pre style='color:red'>"+initDataStr+"
" // initDataStr равен json данным типа : initDataStr = JSON .stringify (initData Json, null, '\ t')}
...