Member 12587659 Ответов: 2

Просмотр файла журнала данных (fileio) в приложении без графического интерфейса


Я работаю над приложением без графического интерфейса. Мне нужно просмотреть файл журнала данных (datalog.txt) из линии команд. Как я могу просматривать файл(datalog.txt) с компьютерного диска без графического интерфейса?? Я использую QT.

Что я уже пробовал:

Я понятия не имею о командной строке. так что любая помощь будет оценена по достоинству

2 Ответов

Рейтинг:
2

Leo Chapiro

Что вы подразумеваете под "просмотром файла журнала данных"?
Если вы просто хотите открыть диалоговое окно файла, попробуйте использовать Класс QFileDialog подобный этому:

fileName = QFileDialog::getOpenFileName(this,
    tr("Open Image"), "/home/jana", tr("Image Files (*.txt)"));


Member 12587659

QFileDialog:: getOpenFileName () используется в графических приложениях. Я ищу получение (просмотр)файла из интерфейса командной строки.

Leo Chapiro

Ничего страшного, вы можете написать консольное приложение, которое использует элементы графического интерфейса/диалоги, это возможно! Например, вы можете вызвать окно сообщения из консоли и так далее ...
Пожалуйста, взгляните: http://doc.qt.io/qt-5/qapplication.html#details

Member 12587659

Когда я нахожусь в разделе Non_GUI, я не могу использовать классы GUI. получение ошибки QFileDialoge:: нет такого файла или каталога

Leo Chapiro

Чтобы использовать любой из классов виджетов, включая диалоговое окно файла, вам необходимо иметь экземпляр QApplication, хотя этот экземпляр не обязательно должен иметь свой метод exec() : http://stackoverflow.com/questions/21568251/qfiledialog-in-a-non-qt-app

Рейтинг:
0

Jochen Arndt

Qt-это графический фреймворк. Если вам не нужен графический интерфейс, то нет необходимости использовать Qt. Затем просто используйте стандартные библиотечные функции C и/или C++.

Не очень понятно, чего вы хотите добиться. Вы хотите открыть текстовый файл и распечатать содержимое на консоли или обработать его построчно?

Это очень просто. Откройте файл и прочитайте его строчку за строчкой. Кроме того, считайте весь контент в выделенный буфер и обрабатывайте строки, ища маркеры конца строки (использование 0x0A / LF / line feed будет работать для Linux и Windows).

Простой пример для первого варианта:

#include <stdio.h>
#include <errno.h>

int main(int argc, char *argv[])
{
    // Buffer must be large enough to store the max. line length from file
    char lineBuffer[256];

    if (argc < 2)
    {
        printf("No file name specified on command line\r\n");
        return 1;
    }

    FILE *f = fopen(argv[1], "r");
    if (NULL == f)
    {
        perror("Error opening file");
        return 1;
    }
    else
    {
        while (fgets(lineBuffer, sizeof(lineBuffer), f))
        {
            // Process line here; printf will print it to the console
            printf("%s", lineBuffer);
        }
        fclose(f);
    }
    return 0;
}
</errno.h></stdio.h>

Я не тестировал его, но приведенный выше пример также должен работать при использовании QtCreator. Просто добавьте "CONFIG += console" в настройки проекта.