Qt

Qt5编译调试Lemon

失败的尝试

Posted by wyj on October 28, 2018

今天想在ubuntu下使用lemon,于是从GitHub上直接clone了一份。

众所周知Lemon是一个很古老的Qt项目,已经与现在的Qt差别极大,于是我试着使用最新版qmake5编译了一下,结果各种问题。

解决方案:

  1. .pro中,Qt += widgets
  2. 几十(可能上百吧,点不清楚了)个提示尚未声明的地方全部#include
  3. 把那个不能编译的构造函数直接注释掉(有个参数叫做Type type)
  4. 把QApplication::UnicodeUTF8换成0
  5. oid改成void (WTF?)
  6. setResizeMode改成setSectionResizeMode
  7. toAscii改成toLatin1
  8. 强制类型转换:(QObject*)ui->buttonBox->button(QDialogButtonBox::Ok)

真是烦的要死

最后编译了几分钟(这是我人生第一次编译这么久的程序)就可以正常运行了

效果如下:

1

为什么字体这么奇怪?因为我是在/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用多了,一直想在左上角找关闭按钮