Russian Qt Forum
Августа 28, 2025, 01:25 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Widget одного процесса разместить внутри Widget-a другого процесса  (Прочитано 3800 раз)
hanabad
Гость
« : Июня 30, 2012, 21:26 »

Привет форумчане! Помогите пожалуйста мне разобраться... Задача такая: Пытаюсь написать программу, которая стартуя запускает себя еще раз. В основном процессе просто Widget, во втором Widget с QwebView внутри. Нужно в Widget основного процесса добавить Widget второго(Пытаюсь сделать как в Chrome=)).
Код:
#include "webview.h"
#include <QApplication>
#include <QUrl>
#include <QMessageBox>
#include <QtCore>
#include <QVBoxLayout>

int main(int c, char **v)
{
    QApplication app(c, v);
    QTextCodec::setCodecForCStrings(QTextCodec::codecForName("CP1251"));
    QStringList args = QApplication::arguments();
    QProcess tProcess;
    QWidget mWidged;
    QWidget tWidget(0, Qt::Window | Qt::FramelessWindowHint);
    WebView *view = new WebView();
    WId id;
    if(args.count() > 1)
    {
        if(QString::compare(args[1], "-tab") != 0)
        {
            QMessageBox::warning(NULL,"Visitor",
                "Программа запущена с неизвестными параметрами!");
            QApplication::quit();
            return 1;
        }
        tWidget.setLayout(new QVBoxLayout());
        view->load(QUrl("http://google.ru"));
        tWidget.layout()->addWidget(view);
        tWidget.layout()->setMargin(0);
        tWidget.setMinimumSize(900,500);
        tWidget.show();
        id = tWidget.winId();
//        mWidged.setLayout(new QVBoxLayout());
//        mWidged.layout()->setMargin(0);
//        mWidged.setMinimumSize(900,500);
//        mWidged.layout()->addWidget(QWidget::find(id));
    }
    if(args.count() == 1)
    {
        QStringList arg;
        arg << "-tab";
        tProcess.start(QApplication::applicationFilePath(), arg);

        mWidged.show();
    }
    app.exec();
}
Проблема в том, что если раскоментировать закоментированные строки, то видно только виджет главного процесса:

При этом стартуют оба процесса. A если оставить коментарии, то просто кажет два окна и все вроде норм...

Подскажите пожалуйста где я не так "нашкодил"? Заранее спасибо за помощь Смеющийся
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #1 : Июля 01, 2012, 12:13 »

Подскажите пожалуйста где я не так "нашкодил"? Заранее спасибо за помощь Смеющийся
А тут, к сожалению, подсказывать нечего, ибо отсутствуют элеменарные знания. Вот хотя бы это.
Если на пальцах, то объект, созданный в рамках одного процесса не доступен другому процессу. И QWidget::find(id) вернёт тебе 0.
Если пишешь под X-ы, то смотри QX11EmbedContainer/QX11EmbedWidget. Под винды смотри WinAPI.
Записан

Qt 5.11/4.8.7 (X11/Win)
hanabad
Гость
« Ответ #2 : Июля 01, 2012, 12:21 »

Цитировать
объект, созданный в рамках одного процесса не доступен другому процессу
Точно, во запарился!  Смеющийся Смеющийся Смеющийся
Цитировать
Под винды смотри WinAPI.
GreatSnake, а конкретно функции не подскажете, а то не понятно
что вы имели в виду.
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #3 : Июля 01, 2012, 12:38 »

GreatSnake, а конкретно функции не подскажете, а то не понятно
что вы имели в виду.
Нет не подскажу. Но коли не знаешь, может и не стоит лезть в эту тему? Там очень много тонкостей. Одна из которых проблема с фокусом.
Записан

Qt 5.11/4.8.7 (X11/Win)
hanabad
Гость
« Ответ #4 : Июля 01, 2012, 12:41 »

Ладно, и на том спасибо. Видимо придется смириться с тормозами окна во время загрузки
WebView страниц.
Записан
kostya2vntu
Гость
« Ответ #5 : Июля 02, 2012, 17:43 »

http://doc.qt.nokia.com/4.7-snapshot/activeqt-webbrowser.html

P.S. Как-то так. Только это не совсем то. И очень даже не кросплатформенно.
Записан
hanabad
Гость
« Ответ #6 : Июля 02, 2012, 17:53 »

http://doc.qt.nokia.com/4.7-snapshot/activeqt-webbrowser.html

P.S. Как-то так. Только это не совсем то. И очень даже не кросплатформенно.
Спасибо ща посмотрю...
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.02 секунд. Запросов: 19.