2013-07-31 37 views
7

Tôi đã cố nhúng các emac trong Ứng dụng Qt bằng cách sử dụng QX11EmbedContainer và hoạt động nhưng với hai ngoại lệ quan trọng. Trước hết, đây là mã:Emacs được nhúng trong Ứng dụng 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; 
} 

Và việc xây dựng và thực hiện đường (và trước đó ném của máy chủ 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 

Và cuối cùng, kết quả:

Emacs client embedded in Qt

Nhưng, khi nào hoặc nếu tôi cố gắng viết nội dung nào đó trong minibuffer, kích thước của tiện ích bị thu gọn và tiêu điểm cũng bị mất:

other capture

Nếu tôi làm nhấp vào widget (nay là ngắn hơn), tôi có thể tiếp tục làm việc với emacs không có vấn đề, nhưng tôi nên thay đổi kích thước cửa sổ để emacs được mở rộng thời gian khác như ban đầu.

Sự cố ở đâu?

Trả lời

5

Thử sử dụng bố cục.

Here là tài liệu Qt5 về quản lý bố cục.