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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QX11EmbedContainer  (Прочитано 3959 раз)
Firefox
Гость
« : Июнь 20, 2016, 16:18 »

Здравствуйте, уважаемые форумчане.
Хочу спросить, почему у меня не получается встроить программу в QX11EmbedContainer. Делаю это в конструкторе. Работаю в системе МСВС ядра 2.6.
Есть у меня tabWidget, на нем лежит фрейм, на фрейме вертикальный лейаут, в который я пытаюсь вписать программу которую запускаю.
Код:
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    this->setWindowTitle("SEND");
    QX11EmbedContainer *container;
    container=new QX11EmbedContainer;
    ui->verticalLayout->addWidget(container);
    container->show();
    QProcess *process;
    container->embedClient(atol("/home/IMIT/contein-build/sender"));
    process = new QProcess(this);
    QStringList arg;
    arg<<QString::number(container->winId());

    QString executable("/home/IMIT/contein-build/sender");
    process->start(executable,arg);
}

Но программа запускается отдельно и не встраивается в контейнер.
Записан
Bepec
Гость
« Ответ #1 : Июнь 20, 2016, 16:45 »

ХЗ как встраивается, но вы не встраиваете, а тупо запускаете отдельный QProcess. Возможно вам стоит почитать документацию на данный компонент?
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #2 : Июнь 20, 2016, 16:53 »

Некоторые отличия от примера из доки есть:
Код
C++ (Qt)
   QX11EmbedContainer container;
   container.show();
 
   QProcess process(&container);
   QString executable(app.arguments()[1]);
   QStringList arguments;
   arguments << QString::number(container.winId());
   process.start(executable, arguments);
 
   int status = app.exec();
   process.close();
   return status;
Записан

Firefox
Гость
« Ответ #3 : Июнь 20, 2016, 17:04 »

Код:
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    this->setWindowTitle("SEND");
    QX11EmbedContainer container;
    container.show();
    QProcess process(&container);
    QString executable("/home/IMIT/contein-build/sender");
    QStringList arg;
    arg<<QString::number(container.winId());
    process->start(executable,arg);
   int st=qApp->exec();
   process.close();
}
Отдельно в окне запускается container и отдельно программа, когда закрываю container открывается форма программы моей.
« Последнее редактирование: Июнь 20, 2016, 17:06 от Firefox » Записан
Firefox
Гость
« Ответ #4 : Июнь 20, 2016, 17:18 »

на exec() все зависает, и не доходит до метода
process.close(). Что можно сделать?
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #5 : Июнь 20, 2016, 20:41 »

а вы exec вызывайте после
его вообще, обычно в main вызывают Улыбающийся
Записан

Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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