我尝试使用 QX11EmbedContainer
在 Qt 应用程序中嵌入 emacs , 并且有效,但有两个重要的异常(exception)。首先,这里是代码:
#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 没有问题,但我应该调整窗口大小以便 emacs 像原来一样在其他时间扩展。
问题出在哪儿?
最佳答案
尝试使用布局。
Here是关于布局管理的 Qt5 文档。
关于qt - 嵌入在 Qt 应用程序中的 Emacs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17982831/