我试图使用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而不会出现问题,但我应该调整窗口大小,以便emacs在原来的其他时间扩展.
问题出在哪儿?
解决方法
尝试使用布局.
Here是关于布局管理的Qt5文档.