Qt Ruby: создание таблицы и динамический ввод данных из текстового файла

У меня есть текстовый файл с именем data.txt с различными параметрами, такими как номер, статус и т.д. Каждая строка содержит различный набор данных.

Теперь в моем графическом интерфейсе у меня есть кнопка отправки. При нажатии этой кнопки я хочу, чтобы «немногие» из этих данных отображались в виде таблицы на экране графического интерфейса.

Во-первых, я знаю, в какой позиции он находится в текстовом файле:

Пример: Статус отображается в позиции [70..78] в каждой строке текстового файла Номер появляется в позиции [85..90] в каждой строке текстового файла и т.д.

Я хочу, чтобы в соответствующих столбцах таблицы отображались только те конкретные части данных.

Любые предложения будут приветствоваться. Я использую Qt и Ruby для своего графического интерфейса.

Following images show what exactly i am looking for: 

Изображение 1: Мой текстовый файл с данными
Изображение 2. Мой окончательный ожидаемый результат должен выглядеть так.

РЕДАКТИРОВАТЬ: используя решение, упомянутое Стивеном:

Использование положения линии сработало для меня. Но один запрос здесь, когда я пытаюсь использовать этот оператор puts, он печатает правильно. Однако, когда я пытаюсь использовать то же самое для отображения внутри виджета TextEdit, каждая строка не отображается.

 @text_var = "#{line[70..78]}\t#{line[85..90]}

  @text = Qt::TextEdit.new(self)
  @text.setText (@text_var) 
  puts  @text_var

Оператор Puts дает правильный вывод, однако я не могу отправить то же самое внутри виджета. Если я использую оператор break, то первая строка отображается в виджете правильно. Таким образом, ошибка возникает, когда он пытается прочитать строку за строкой в ​​виджете. В конечном счете, он перезаписывается, и последняя строка, где есть только пробелы, печатается в виджете, который я чувствую.

Любые решения для этого?


person topjay    schedule 09.03.2016    source источник
comment
лучше разделить часть преобразования и часть графического интерфейса на отдельные процессы и вопросы, если необходимо, преобразовать, например, в массив и проверить, все ли в порядке, простым размещением массива, затем попытаться отобразить массив в таблице, задать для этого отдельный вопрос и показать нам код, который вы использовали, и образец ваших данных   -  person peter    schedule 09.03.2016


Ответы (1)


Похоже, что нужные вам Status и Number всегда отображаются в одном и том же столбце. Вы можете разделить каждую строку data.txt на пробел, чтобы отображать только нужный столбец.

File.open('data.txt').readlines.each do |line|
  columns = line.split(/\s+/)
  puts "#{columns[4]}\t#{columns[5]}"  
end

Это печатает 5-й и 6-й столбцы, разделенные табуляцией.

Вы также можете воспользоваться знанием позиции, как вы упоминаете:

File.open('data.txt').readlines.each do |line|
  puts "#{line[70..78]}\t#{line[85..90]}"  
end
person Stephen Grimes    schedule 09.03.2016
comment
Спасибо за решение. Я попробую использовать этот метод один раз и вернусь. Однако, поскольку я знаю, что статус и номер отображаются в одной и той же позиции в каждой строке, например, строка [70..78] wil b status , могу ли я использовать это вместо столбцов? - person topjay; 09.03.2016
comment
Да, ты тоже можешь это сделать. добавлю в решение - person Stephen Grimes; 09.03.2016
comment
Спасибо. Думаю, эта часть больше подойдет мне, так как я пытался использовать позиции в других частях кода. - person topjay; 09.03.2016
comment
Я попробую их как можно скорее и вернусь с результатом !! - person topjay; 09.03.2016
comment
Пожалуйста, проверьте часть редактирования в коде ниже и очистите этот запрос! Я не смог добавить часть кода в комментарии, поэтому отредактировал вопрос - person topjay; 09.03.2016