Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.
Внимание! Некоторое время письма не доходят до аккаунтов MAIL RU GROUP, не доходят на все почтовые ящики mail.ru, inbox.ru, bk.ru. Пишите им жалобы, чтобы быстрее восстановили получение писем, регистрируйтесь через яндекс почту и gmail, туда письма с активизацией доходят.

Вернуться   Форум программистов > 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,402
Репутация: 3353

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,402
Репутация: 3353

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,402
Репутация: 3353

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,402
Репутация: 3353

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


14:36.


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

RusProfile.ru


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