KL
Konstantin LazarevMay 1, 2017, 2:28 p.m.

Открытие нескольких сайтов

Добрый вечер, необходимо реализовать приложение, которое будет открывать несколько сайтов. Дайте совет по реализации.

We recommend hosting TIMEWEB
We recommend hosting TIMEWEB
Stable hosting, on which the social network EVILEG is located. For projects on Django we recommend VDS hosting.

Do you like it? Share on social networks!

16
Evgenii Legotckoi
  • May 2, 2017, 12:30 a.m.

Привет.
Здесь мне на ум приходит реализация, как в браузере. Делаем вкладки с помощью QTabWidget. И в каждой вкладке отображаем QWebEngineView с необходимой страницей.

Заголовочный файл

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QWebEngineView>
#include <QUrl>

namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT

public:
    explicit Widget(QWidget *parent = 0);
    ~Widget();

private slots:
    void on_pushButton_clicked();

private:
    Ui::Widget *ui;
};

#endif // WIDGET_H

Файл реализации

#include "widget.h"
#include "ui_widget.h"


Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
}

Widget::~Widget()
{
    delete ui;
}

void Widget::on_pushButton_clicked()
{
    QString url = ui->lineEdit->text();
    if (!url.isEmpty())
    {
        QWebEngineView *webPage = new QWebEngineView(ui->tabWidget);
        ui->tabWidget->addTab(webPage, url);
        webPage->setUrl(QUrl(url));
    }
}
    KL
    • May 2, 2017, 2:58 a.m.

    Старая версия QT . Через QWebViev получится? В качестве экранов, в основном приложении, это можно реализовать?

      Evgenii Legotckoi
      • May 2, 2017, 3:08 a.m.

      Да. Через QWebView получится. QWebEngineView - это замена QWebView. Что значит в качестве экранов в основном приложении? QMdiArea? Можно также использовать и QTabWidget.

        KL
        • May 2, 2017, 3:16 a.m.

        Я нарисовал схему, приложение позволяет вставлять картинки?

          KL
          • May 2, 2017, 3:19 a.m.

          Читал вашу статью про QMdiArea, может и через него, но в окне необходимо проявлять активность. QMdiArea позволяет такое?

            Evgenii Legotckoi
            • May 2, 2017, 3:21 a.m.

            В смысле методом Drag and Drop? В этой статье есть описание механизма Drag and Drop для приложений на Qt.

            Если хотите показать эту схему, то приложение в качестве вложения к сообщению, только название файла пусть на английском будет. Я пока обработку кириллицы не поправил на сайте.

              Evgenii Legotckoi
              • May 2, 2017, 3:22 a.m.

              Вообще, если говорить об активности, то на активность должен реагировать сам QWebView, если говорить о кликах, активности мыши и т.д., то полагаю, что можно будет наследоваться от QWebView и просто переопределить методы mousePressEvent и т.д.

                KL
                • May 2, 2017, 3:23 a.m.

                На сайт могу картинку загрузить?) На ваш сайт в обсуждение темы

                  KL
                  • May 2, 2017, 3:24 a.m.

                  Вот картинка

                    Evgenii Legotckoi
                    • May 2, 2017, 3:25 a.m.

                    В сообщениях ниже комментария есть кнопка Выберите Файл , туда можно добавить картинку. Или архив с картинками.

                      KL
                      • May 2, 2017, 3:25 a.m.

                      В каждом квадратике отдельный сайт. К нему я прикреплю кнопку изменения размера.

                        Evgenii Legotckoi
                        • May 2, 2017, 3:30 a.m.

                        Для такой вёрстки можно использовать QGridLayout и в каждую ячейку добавлять QWebView. (Или скриншот сайта в QWidget`е).

                        Если добавлять кнопку, то тогда QWebView помещать в QWidget, в котором уже будут все необходимые кнопки для разворачивания и "изменения размеров"

                          KL
                          • May 2, 2017, 3:32 a.m.

                          Как сделать скрин сайта?

                            Evgenii Legotckoi
                            • May 2, 2017, 3:47 a.m.
                            • The answer was marked as a solution.

                            У QWebView есть сигнал loadFinished() , а поскольку он наследован от QWidget , то у него есть метод render, который можно использовать для создания изображения из QWidget .

                            Правильным был бы следующий подход. При добавлении сайта в программу, открывать страницу сайта через QWebView и делать скриншот QWebView, как только страница полностью загрузится.

                            QWebView *webPage = new QWebView(ui->tabWidget);
                            // Любой контейнер размещение для QWebView, можно использовать QGridLayout
                            ui->tabWidget->addTab(webPage, url);
                            
                            // Подключаем слот обработчик или лямбду, как только загрузится, получим скриншот виджета QWebView
                            connect(webPage, &QWebEngineView::loadFinished, [this, webPage](){
                                QPixmap pix(webPage->size()); // Рендерим в QPixmap
                                webPage->render(&pix, QPoint(), QRegion(webPage->rect()));
                            });
                            
                            webPage->setUrl(QUrl(url)); // Запустили загрузку
                              KL
                              • May 2, 2017, 4:24 a.m.

                              setStyleSheet("QWebView {border: 2px solid red}"); Не применяет стили к QWebView. Для Button все работает.

                                Evgenii Legotckoi
                                • May 2, 2017, 10:18 a.m.

                                Попробуйте установить стили и для QWidget, в котором находится QWebView. Если учесть, что QWebView наследован от QWidget, то случается, что parent объект переопределяет кое-какие параметры стилей.

                                  Comments

                                  Only authorized users can post comments.
                                  Please, Log in or Sign up
                                  AD

                                  C ++ - Test 004. Pointers, Arrays and Loops

                                  • Result:50points,
                                  • Rating points-4
                                  m

                                  C ++ - Test 004. Pointers, Arrays and Loops

                                  • Result:80points,
                                  • Rating points4
                                  m

                                  C ++ - Test 004. Pointers, Arrays and Loops

                                  • Result:20points,
                                  • Rating points-10
                                  Last comments
                                  i
                                  innorwallNov. 11, 2024, 10:12 p.m.
                                  Django - Tutorial 055. How to write auto populate field functionality Freckles because of several brand names retin a, atralin buy generic priligy
                                  i
                                  innorwallNov. 11, 2024, 6:23 p.m.
                                  QML - Tutorial 035. Using enumerations in QML without C ++ priligy cvs 24 Together with antibiotics such as amphotericin B 10, griseofulvin 11 and streptomycin 12, chloramphenicol 9 is in the World Health Organisation s List of Essential Medici…
                                  i
                                  innorwallNov. 11, 2024, 3:50 p.m.
                                  Qt/C++ - Lesson 052. Customization Qt Audio player in the style of AIMP It decreases stress, supports hormone balance, and regulates and increases blood flow to the reproductive organs buy priligy online safe Promising data were reported in a PDX model re…
                                  i
                                  innorwallNov. 11, 2024, 2:19 p.m.
                                  Heap sorting algorithm The role of raloxifene in preventing breast cancer priligy precio
                                  i
                                  innorwallNov. 11, 2024, 1:55 p.m.
                                  PyQt5 - Lesson 006. Work with QTableWidget buy priligy 60 mg 53 have been reported by Javanovic Santa et al
                                  Now discuss on the forum
                                  i
                                  innorwallNov. 11, 2024, 8:56 p.m.
                                  добавить qlineseries в функции buy priligy senior brother Chu He, whom he had known for many years
                                  i
                                  innorwallNov. 11, 2024, 10:55 a.m.
                                  Всё ещё разбираюсь с кешем. priligy walgreens levitra dulcolax carbs The third ring was found to be made up of ultra relativistic electrons, which are also present in both the outer and inner rings
                                  9
                                  9AnonimOct. 25, 2024, 9:10 a.m.
                                  Машина тьюринга // Начальное состояние 0 0, ,<,1 // Переход в состояние 1 при пустом символе 0,0,>,0 // Остаемся в состоянии 0, двигаясь вправо при встрече 0 0,1,>…

                                  Follow us in social networks