2013-07-31 10 views
7

मैंने QX11EmbedContainer का उपयोग कर एक क्यूटी अनुप्रयोग में emacs को एम्बेड करने का प्रयास किया है, और काम करता है लेकिन दो महत्वपूर्ण अपवाद के साथ।एक क्यूटी अनुप्रयोग में एम्बेडेड Emacs

#include <QX11EmbedWidget> 
#include <QtGui> 
#include <QApplication> 

int main(int argc, char *argv[]) 
{ 
    QApplication app(argc, argv); 

    QX11EmbedContainer container; 
    container.show(); 
    container.resize(500, 500); 

    QProcess* process = new QProcess(&container); 
    QString executable("emacsclient"); 

    QStringList arguments; 
    arguments << "--parent-id" << QString::number(container.winId()); 

    process->start(executable, arguments); 

    int status = app.exec(); 

    process->close(); 

    return status; 
} 

और संकलन और निष्पादन लाइन (और पिछले Emacs सर्वर फेंक):

$ emacs -q --daemon & 
// filtered output 
$ g++ test.cpp -lQtGui -lQtCore -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4 
$ ./a.out 

और अंत में, परिणाम:

सबसे पहले, यहाँ कोड है Emacs client embedded in Qt

लेकिन, जब मैं मिनीबफर में कुछ लिखने की कोशिश करता हूं, तो विजेट का आकार गिर जाता है, और फोकस भी खो जाता है:

other capture

अगर मैं (अब कम) विजेट में क्लिक करें, मैं समस्याओं के बिना Emacs के साथ काम जारी रख सकते हैं, लेकिन मैं Emacs करने के लिए विंडो का आकार बदलने चाहिए और समय का विस्तार किया है के रूप में मूल रूप से।

समस्या कहां है?

उत्तर

5

एक लेआउट का उपयोग करने का प्रयास करें।

Here लेआउट प्रबंधन पर Qt5 दस्तावेज़ है।

संबंधित मुद्दे