تضمين تطبيق (في هذه الحالة محطة) داخل تطبيق QT

StackOverflow https://stackoverflow.com/questions/305523

  •  08-07-2019
  •  | 
  •  

سؤال

وأنا أكتب تطبيق QT، وأنا بحاجة إلى تضمين محطة (نقول، تيرم) ضمن QDialog، مثل بعض التطبيقات KDE (انظر كي ديفيلوب / كيت /...).

ولقد حاولت مع: - QX11EmbedContainer وضعها في QLayout من بلدي QDialog - QProcess لبرنامج أريد أن excecute

وأتوقع أن QProcess تشغيل داخل QX11EmbedContainer، ولكنه لا يعمل.

والمشكلة هي أنني لا يمكن وضع تيرم في QX11EmbedContainer، والشيء الوحيد الذي يمكنني الحصول هو نافذة إكس تيرم (مفصولة للأسف من وجهة نظري QDialog). هل أي شخص حصل نفس المشكلة؟

هل كانت مفيدة؟

المحلول

عذرا، لقد حاولت حل الخاصة بك قبل النشر يا هذا الموقع وأنها لا تعمل. لقد حل التحول إلى kdelibs واستخدام تلك الواردات وهذا الرمز

#include <kparts/part.h>
#include <assert.h>
#include <kde_terminal_interface.h>
#include <kpluginfactory.h>
#include <klibloader.h>

KLibFactory* factory = KLibLoader::self()->factory( "libkonsolepart" );
KParts::Part* p = static_cast<KParts::Part*>(factory->create( this,"tralala",         
QStringList() << "dio") );

assert(p);
setCentralWidget( p->widget() );
TerminalInterface *t = qobject_cast<TerminalInterface*>(p);
t->showShellInDir( QDir::home().path() );

نصائح أخرى

وتحتاج إلى تمرير ID نافذة الحاوية إلى تيرم.

إذا نظرتم المثال في مساعدة كيو تي لQX11EmbedContainer، انها مجرد يمر هوية نافذة على QProcess. تغيير هذا إلى

 QProcess process(&container);
 QString executable(app.arguments()[1]);
 QStringList arguments;
 arguments << "-into" << QString::number(container.winId());
 process.start(executable, arguments);

وحيث "-into" قد أضيفت إلى الحجج. من الصفحة إكس تيرم الرجل:

<اقتباس فقرة>   

و-into windowId

     

ونظرا معرف X نافذة (عدد صحيح عشري)، تيرم     سوف reparent قذيفة المستوى الأعلى لها     القطعة إلى تلك النافذة. ويستخدم هذا     لتضمين تيرم ضمن التطبيقات الأخرى.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top