Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > C++ > Qt и кроссплатформенное программирование С/С++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 05.07.2018, 23:33   #1
jaketaylor
Пользователь
 
Регистрация: 22.05.2011
Сообщений: 19
Репутация: 10
По умолчанию Qt Копирование данных с таблицы на сайте

Здравствуйте. Имеется сайт с таблицей (Допустим site.ru). Таблица примерно 10х10 в которую заносятся числовые значения десятичные. Но размер таблицы не фиксированный, он со временем может меняться, например на 10х17.
Вопрос: Имеется форма MainWindow (простое окно, в которую добавляется элемент "TableView"). Каким образом реализовать через таблицу "TableView", чтобы создалась именно такая же таблица (такого же размера) как на сайте с переносом числовых значений (числовые значения должны записываться в переменные массива, массив динамический тогда должен быть).

Есть пример кода для создания столбцов и колонок, но не понимаю, как сделать эту таблицу динамической:


Код:

 QStandardItemModel *model = new QStandardItemModel;
    QStandardItem *item;
 
    //Заголовки столбцов
    QStringList horizontalHeader;
    horizontalHeader.append("Первый");
    horizontalHeader.append("Второй");
    horizontalHeader.append("Третий");
    horizontalHeader.append("Четвертый");
 
    //Заголовки строк
    QStringList verticalHeader;
    verticalHeader.append("Ряд 1");
    verticalHeader.append("Ряд 2");
 
    model->setHorizontalHeaderLabels(horizontalHeader);
    model->setVerticalHeaderLabels(verticalHeader);
 
    //Первый ряд
    item = new QStandardItem(QString("0"));
    model->setItem(0, 0, item);
 
    item = new QStandardItem(QString("1"));
    model->setItem(0, 1, item);
 
    item = new QStandardItem(QString("2"));
    model->setItem(0, 2, item);
 
    item = new QStandardItem(QString("3"));
    model->setItem(0, 3, item);
 
    //Второй ряд
    item = new QStandardItem(QString("4"));
    model->setItem(1, 0, item);
 
    item = new QStandardItem(QString("5"));
    model->setItem(1, 1, item);
 
    item = new QStandardItem(QString("6"));
    model->setItem(1, 2, item);
 
    item = new QStandardItem(QString("7"));
    model->setItem(1, 3, item);
 
    ui->tableView->setModel(model);
 
    ui->tableView->resizeRowsToContents();
    ui->tableView->resizeColumnsToContents();

jaketaylor вне форума   Ответить с цитированием
Старый 05.07.2018, 23:49   #2
Alex11223
Модератор
Заслуженный модератор
 
Регистрация: 12.01.2011
Сообщений: 17,109
Репутация: 3316

icq: 512-765
skype: alexp.frl
По умолчанию

Так а вопрос-то в чем? Делайте HTTP запрос (если есть API, то к API) и доставайте что надо.
Alex11223 вне форума   Ответить с цитированием
Старый 05.07.2018, 23:55   #3
jaketaylor
Пользователь
 
Регистрация: 22.05.2011
Сообщений: 19
Репутация: 10
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Так а вопрос-то в чем? Делайте HTTP запрос (если есть API, то к API) и доставайте что надо.
Как? Подскажите в какую сторону копать
jaketaylor вне форума   Ответить с цитированием
Старый 06.07.2018, 00:05   #4
Alex11223
Модератор
Заслуженный модератор
 
Регистрация: 12.01.2011
Сообщений: 17,109
Репутация: 3316

icq: 512-765
skype: alexp.frl
По умолчанию

Подсказал же.

https://www.google.com/search?q=qt+http+request
Alex11223 вне форума   Ответить с цитированием
Старый 06.07.2018, 00:24   #5
jaketaylor
Пользователь
 
Регистрация: 22.05.2011
Сообщений: 19
Репутация: 10
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Спасибо за ссылку. Это всё так кусками, не понятно что и как. Может есть книга какая про работу с html средствами c++?
jaketaylor вне форума   Ответить с цитированием
Старый 06.07.2018, 00:35   #6
Alex11223
Модератор
Заслуженный модератор
 
Регистрация: 12.01.2011
Сообщений: 17,109
Репутация: 3316

icq: 512-765
skype: alexp.frl
По умолчанию

Вряд ли, изучайте основы работы веба, HTTP протокол и т.п., ищите библиотеки для парсинга нужного формата (HTML, JSON, ...).
Alex11223 вне форума   Ответить с цитированием
Старый 06.07.2018, 00:43   #7
jaketaylor
Пользователь
 
Регистрация: 22.05.2011
Сообщений: 19
Репутация: 10
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Вряд ли, изучайте основы работы веба, HTTP протокол и т.п., ищите библиотеки для парсинга нужного формата (HTML, JSON, ...).
Тогда вопрос, на каком языке проще организовать копирование текста с html страницы? Но на этом же языке нужно и создать экранную форму.
Смысл в чем, нужно просто создать окно, в котором по нажатию на кнопку текст скопируется с сайта в вставится в в экранную форму

Последний раз редактировалось jaketaylor; 06.07.2018 в 00:48.
jaketaylor вне форума   Ответить с цитированием
Старый 06.07.2018, 01:06   #8
Alex11223
Модератор
Заслуженный модератор
 
Регистрация: 12.01.2011
Сообщений: 17,109
Репутация: 3316

icq: 512-765
skype: alexp.frl
По умолчанию

Да на любом не сложно.

C# например.
Alex11223 вне форума   Ответить с цитированием
Старый 06.07.2018, 01:34   #9
jaketaylor
Пользователь
 
Регистрация: 22.05.2011
Сообщений: 19
Репутация: 10
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Да на любом не сложно.

C# например.
Начал разбираться. Нужна библиотека curl
Работаю через QT Creator. Создал проект, назвал test.
1) Скачал curl
2) Скопировал из распакованного архива все файлы из папки /curl/include/ в /usr/include/curl
3) В файл test.pro проекта дописал:
Цитата:
LIBS += -lcurl
4) Пытаюсь скомпилировать и выдается ошибка:
Цитата:
:-1: ошибка: collect2: error: ld returned 1 exit status
Вот код программы:
Код:

//подключаем необходимые заголовочные файлы
#include <string>
#include <iostream>
#include <curl/curl.h>
//подключаем стандартное пространство имен
using namespace std;
//объявляем буфер, для хранения возможной ошибки, размер определяется в самой библиотеке
static char errorBuffer[CURL_ERROR_SIZE];
//объялвяем буфер принимаемых данных
static string buffer;
//функция обратного вызова
static int writer(char *data, size_t size, size_t nmemb, string *buffer)
{
  //переменная - результат, по умолчанию нулевая
  int result = 0;
  //проверяем буфер
  if (buffer != NULL)
  {
    //добавляем к буферу строки из data, в количестве nmemb
    buffer->append(data, size * nmemb);
    //вычисляем объем принятых данных
    result = size * nmemb;
  }
  //вовзращаем результат
  return result;
}

//главная функция
int main(void)
{
    //необходимые CURL объекты
    CURL *curl;
    CURLcode result;
    //инициализируем curl
    curl = curl_easy_init();
    //проверяем результат инициализации
    if (curl)
    {
      //задаем все необходимые опции
      //определяем, куда выводить ошибки
      curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, errorBuffer);
      //задаем опцию - получить страницу по адресу http://google.com
      curl_easy_setopt(curl, CURLOPT_URL, "google.com");
      //указываем прокси сервер
      curl_easy_setopt(curl, CURLOPT_PROXY, "proxy:8080");
      //задаем опцию отображение заголовка страницы
      curl_easy_setopt(curl, CURLOPT_HEADER, 1);
      //указываем функцию обратного вызова для записи получаемых данных
      curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writer);
      //указываем куда записывать принимаемые данные
      curl_easy_setopt(curl, CURLOPT_WRITEDATA, &buffer);
      //запускаем выполнение задачи
      result = curl_easy_perform(curl);
      //проверяем успешность выполнения операции
      if (result == CURLE_OK)
      //выводим полученные данные на стандартный вывод (консоль)
        cout << buffer << "\n";
      else
        //выводим сообщение об ошибке
        cout << "Ошибка! " << errorBuffer << endl;
  }
  //завершаем сессию
  curl_easy_cleanup(curl);
  return 0;
}

Как убрать эту ошибку, ума не приложу?
jaketaylor вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Копирование данных из Таблицы в Таблицу - MS Access nikolaynn2008 Microsoft Office Access 32 26.07.2016 11:12
Копирование данных из одной таблицы в другую Streb БД в Delphi 12 24.02.2014 14:51
Выборочное копирование данных из таблицы wmkasper Microsoft Office Excel 14 12.03.2010 20:22
копирование данных из таблицы в таблицу Sack Microsoft Office Access 1 16.09.2008 05:59
Копирование данных из одной таблицы в другую! фЁдОр БД в Delphi 18 06.01.2008 20:27


03:24.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru