2013-07-31 12 views
7

Próbowałem osadzić emacs w aplikacji Qt przy użyciu QX11EmbedContainer i działa, ale z dwoma ważnymi wyjątkami. Przede wszystkim, oto kod:Emacs osadzone w aplikacji Qt

#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; 
} 

a linia kompilacja i wykonanie (i poprzedni wyrzucony z serwera 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 

I wreszcie, wynik:

Emacs client embedded in Qt

Ale, kiedy lub jeśli spróbuję napisać coś w minibuforze, rozmiar widżetu jest zwinięty, a ostrość jest również tracona:

other capture

Gdybym zrobić kliknij w (obecnie krótszy) widget, mogę kontynuować pracę z emacs bez problemów, ale mam rozmiar okna, aby emacs jest rozszerzona innym razem jak pierwotnie.

Gdzie jest problem?

Odpowiedz

5

Spróbuj użyć układu.

Here to dokumentacja Qt5 na temat zarządzania układem.

Powiązane problemy