嵌入在Qt应用程序中的Emacs

时间:2013-07-31 23:37:22

标签: qt emacs embed

我尝试使用QX11EmbedContainer在一个Qt应用程序中嵌入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在原来的其他时间进行扩展。

问题出在哪里?

1 个答案:

答案 0 :(得分:5)

尝试使用布局。

Here是有关布局管理的Qt5文档。