今天想在ubuntu下使用lemon,于是从GitHub上直接clone了一份。
众所周知Lemon是一个很古老的Qt项目,已经与现在的Qt差别极大,于是我试着使用最新版qmake5编译了一下,结果各种问题。
解决方案:
- .pro中,Qt += widgets
- 几十(可能上百吧,点不清楚了)个提示尚未声明的地方全部#include
- 把那个不能编译的构造函数直接注释掉(有个参数叫做Type type)
- 把QApplication::UnicodeUTF8换成0
- oid改成void (WTF?)
- setResizeMode改成setSectionResizeMode
- toAscii改成toLatin1
- 强制类型转换:(QObject*)ui->buttonBox->button(QDialogButtonBox::Ok)
真是烦的要死
最后编译了几分钟(这是我人生第一次编译这么久的程序)就可以正常运行了
效果如下:
为什么字体这么奇怪?因为我是在/opt下编译的,要用root权限执行QtCreator
** 参考文献 **
UPD:一评测完就段错误,不知道为什么
2018.11.3 UPD:
今天使用Debug模式又编译了几分钟,开始调试Lemon了。QtCreator的调试真的好用。
在contestant.cpp中的setCompileState()和setResult()两个函数,会有QList的访问越界。于是把代码改成了我的点分治的写法:
template<typename T> void Set(QList<T> &a, int index, const T &b){
while (a.size()<=index) a.push_back(T());
a[index]=b;
}
然后把直接访问下标改成了调用Set()函数。
最后回到Release模式编译即可。一切正常!
现在小机房的16.04用多了,一直想在左上角找关闭按钮