Russian Qt Forum
Сентябрь 30, 2024, 12:38 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: createWindowContainer и встраивание в окно  (Прочитано 16497 раз)
traktort
Гость
« : Март 02, 2016, 12:23 »

Добрый день!

Подскажите, пожалуйста, пользовался ли кто-нибудь createWindowContainer?

Создаю виджет wi, получаю его WId, а из него получаю QWindow *myWindow.
В лайаут окна приложения вставляю QWidget.

Код:
    wi->show();
    WId wid = wi->winId();
    QWindow* myWindow = QWindow::fromWinId(wid);

    QWidget* widget = QWidget::createWindowContainer(myWindow);
    widget->setMaximumSize(100,100);
    ui->horizontalLayout_2->addWidget(widget);

В итоге работает через раз (почему?), да еще и не так, как надо.
То есть окно первого виджета остается существовать, но его содержимое (кнопочка у меня) отсутствует - она появляется в окне приложения. Как избавиться от оставшегося пустого окошка непонятно. Запуталась я)

И самое главное - могу ли я встроить не свой виджет в окно, а стороннее приложение, например, калькулятор стандартный?

Всем ответившим заранее спасибо! Целующий
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #1 : Март 02, 2016, 13:05 »

createWindowContainer необходим для встраивания QOpenGLWindow, о каких-то других разумных применениях мне ничего не известно. Он капризничает с обработкой событий, это решаемо, но создавать его "просто так" не видно смысла

И самое главное - могу ли я встроить не свой виджет в окно, а стороннее приложение, например, калькулятор стандартный?
Нет (во всяком случае средствами Qt)
Записан
traktort
Гость
« Ответ #2 : Март 02, 2016, 13:30 »

Нет (во всяком случае средствами Qt)

То есть выхода нет никакого? =(
Не могу найти ничего полезного по этой теме, а ведь такая интересная опция.

Вот тут баг, но, видимо, делается то же, что хочу я.
https://bugreports.qt.io/browse/QTBUG-44404
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #3 : Март 02, 2016, 13:42 »

Вот тут баг, но, видимо, делается то же, что хочу я.
https://bugreports.qt.io/browse/QTBUG-44404
Ну а почему Вы так решили? Другое приложение имеет другое адресное пр-во, общаться с ним из своего - дело непростое (и немаленькое), нужна солидная, возможно платформо-зависимая, технология. А решить это "просто созданием какого-то окна" точно не удастся Улыбающийся  И, в конце-концов, много ли счастья от "встроенного калькулятора"?  Улыбающийся
Записан
traktort
Гость
« Ответ #4 : Март 02, 2016, 14:39 »

нужна солидная, возможно платформо-зависимая, технология

Я представляла это несколько иначе. Окно стороннего приложения "обрезается" сверху, что бы не было красного крестика и т.д. И положение его = положению виджета-контейнера. И размер. И оно поверх окна.

Знать бы, как запустить "калькулятор" поверх всех окон, сделать его нужного размера и в нужном месте расположить...


много ли счастья от "встроенного калькулятора"?  Улыбающийся

У меня было бы много =)
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #5 : Март 02, 2016, 15:08 »

Ну, если этот калькулятор существует в виде СОМ-компоненты или чего-то подобного, то, тогда, как-то можно.
Иначе никак.
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #6 : Март 02, 2016, 15:20 »

Знать бы, как запустить "калькулятор" поверх всех окон, сделать его нужного размера и в нужном месте расположить...
Ну это как раз решаемо - окно калькулятора доступно через WinAPI. Но если Вы выбрали эту задачу в целях обучение, то это неудачный выбор, тут мало чему можно научиться, все сведется к зубрежке API
Записан
traktort
Гость
« Ответ #7 : Март 02, 2016, 15:27 »

Ну это как раз решаемо - окно калькулятора доступно через WinAPI.

У меня linux. В нем есть какой-то доступ к окну?))
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #8 : Март 02, 2016, 15:41 »

У меня linux. В нем есть какой-то доступ к окну?))
Ваше упорство заслуживает лучшего применения  Улыбающийся
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #9 : Март 02, 2016, 16:20 »

А можно узнать, для чего подобное понадобилось?
Возможно есть другие, более простые пути решения.
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
traktort
Гость
« Ответ #10 : Март 03, 2016, 08:35 »

А можно узнать, для чего подобное понадобилось?
Возможно есть другие, более простые пути решения.


Допустим, есть расчетная программа. И есть десяток калькуляторов (разных, например химический и т.д.) Все десять калькуляторов есть в виде исполняемых файлов. Очень удобно было бы поставить на форму расчетной программы tab-widget, в каждую вкладку впихнуть калькулятор и по необходимости открывать то один, то другой =) А не 100500 окон открыть и запутаться, какой что считает.

Пока ничего не удалось придумать ((
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #11 : Март 03, 2016, 11:40 »

Ну тогда все равно получится "каша из интерфейсов", ведь каждый калькулятор, скорее всего, имеет свой неповторимый гуй и о наличии других ничего не знает. Т.е. обмен рассчетами только через буфер обмена, никаких общих данных и т.д. Было бы хорошо сдружить их на уровне единого приложения, если бы были исходники Улыбающийся Но, я так понимаю, это не Ваш случай?
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
qate
Супер
******
Offline Offline

Сообщений: 1176


Просмотр профиля
« Ответ #12 : Март 03, 2016, 13:50 »

идея интересная
пример из багрепорта "работает", но не могу получить window id чужого окна
Записан
traktort
Гость
« Ответ #13 : Март 04, 2016, 23:49 »

Было бы хорошо сдружить их на уровне единого приложения, если бы были исходники Улыбающийся Но, я так понимаю, это не Ваш случай?

Да, именно так.
Записан
traktort
Гость
« Ответ #14 : Март 04, 2016, 23:51 »

идея интересная
пример из багрепорта "работает", но не могу получить window id чужого окна


Не то слово)
"Работает" - это как?
У меня ненормально работает, в ст написала.
Какой у вас Qt?
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


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