嵌入在Qt应用程序中的Emacs

嵌入在Qt应用程序中的Emacs,qt,emacs,embed,Qt,Emacs,Embed,我曾尝试使用QX11EmbedContainer将emacs嵌入Qt应用程序,但有两个重要的例外。首先,代码如下: #include <QX11EmbedWidget> #include <QtGui> #include <QApplication> int main(int argc, char *argv[]) { QApplication app(argc, argv); QX11EmbedContainer container; con

我曾尝试使用
QX11EmbedContainer
将emacs嵌入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;
}
最后,结果是:

但是,当或如果我尝试在minibuffer中写入内容时,小部件的大小会崩溃,焦点也会丢失:

如果我在(现在较短的)小部件中单击,我可以毫无问题地继续使用emacs,但我应该调整窗口大小,以便emacs在其他时间像最初一样展开

问题出在哪里?

尝试使用布局

是关于布局管理的Qt5文档

$ 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