还有这种好东西 收藏了收藏了
标题忘记改了吧,怎么是十六进制编辑器啊
标题忘记改了吧,怎么是十六进制编辑器啊
哦哦,应该是文本翻译出问题了,我有时间改一下图。
hi又是我,和上次类似的问题,部分子模块使用了c++20的特性,以至于使用debian10底层的uos专业版无法编译
这次的报错来自
~/WingGifEditor2/3rdparty/qwindowkit/qmsetup/src/corecmd/main.cpp: In function 'void copyDirectory(const std::filesystem::__cxx11::path&, const std::filesystem::__cxx11::path&, const std::filesystem::__cxx11::path&, bool, bool, const std::function&)':
~/WingGifEditor2/3rdparty/qwindowkit/qmsetup/src/corecmd/main.cpp:173:40: error: 'std::__cxx11::string' {aka 'class std::__cxx11::basic_string'} has no member named 'starts_with'
linkPath.string().starts_with(srcRootDir.string())
^~~~~~~~~~~
hi又是我,和上次类似的问题,部分子模块使用了c++20的特性,以至于使用debian10底层的uos专业版无法编译
这次的报错来自
~/WingGifEditor2/3rdparty/qwindowkit/qmsetup/src/corecmd/main.cpp: In function 'void copyDirectory(const std::filesystem::__cxx11::path&, const std::filesystem::__cxx11::path&, const std::filesystem::__cxx11::path&, bool, bool, const std::function&)':
~/WingGifEditor2/3rdparty/qwindowkit/qmsetup/src/corecmd/main.cpp:173:40: error: 'std::__cxx11::string' {aka 'class std::__cxx11::basic_string'} has no member named 'starts_with'
linkPath.string().starts_with(srcRootDir.string())
^~~~~~~~~~~
嘿,这我肯定想到了,你肯定没好好看 CMakeList
文件。把选项 WINGGIF_USE_FRAMELESS
关掉就好啦,和我那个十六进制编辑器一样的操作即可。
能否打包成applmage包
能否打包成applmage包
这个我尝试打过,但我不会打,打包后的程序跑不起来。😂
这个程序不需要 root 权限,我考虑打包成 flatpak 、 appimage、linglong 包。不过前两者在大多数 Linux 发行版比较通用。等我周末再尝试。
嘿,这我肯定想到了,你肯定没好好看 CMakeList
文件。把选项 WINGGIF_USE_FRAMELESS
关掉就好啦,和我那个十六进制编辑器一样的操作即可。
啊,其实我根本看不懂CMakeLists
现在遇到了一个这样的报错
root/WingGifEditor2/src/dialog/framelessdialogbase.cpp:68:12: error: invalid use of incomplete type 'class QKeyEvent'
if (evt->key() == Qt::Key_Enter || evt->key() == Qt::Key_Return)
^~
In file included from /opt/runtime/qt/include/QtWidgets/qdialog.h:44,
from /opt/runtime/qt/include/QtWidgets/QDialog:1,
from /root/WingGifEditor2/src/dialog/framelessdialogbase.h:8,
from /root/WingGifEditor2/src/dialog/framelessdialogbase.cpp:1:
/opt/runtime/qt/include/QtWidgets/qwidget.h:75:7: note: forward declaration of 'class QKeyEvent'
class QKeyEvent;
^~~~~~~~~
/root/WingGifEditor2/src/dialog/framelessdialogbase.cpp:68:43: error: invalid use of incomplete type 'class QKeyEvent'
if (evt->key() == Qt::Key_Enter || evt->key() == Qt::Key_Return)
^~
In file included from /opt/runtime/qt/include/QtWidgets/qdialog.h:44,
from /opt/runtime/qt/include/QtWidgets/QDialog:1,
from /root/WingGifEditor2/src/dialog/framelessdialogbase.h:8,
from /root/WingGifEditor2/src/dialog/framelessdialogbase.cpp:1:
/opt/runtime/qt/include/QtWidgets/qwidget.h:75:7: note: forward declaration of 'class QKeyEvent'
class QKeyEvent;
^~~~~~~~~
我不熟悉qt,现在的qt环境是我自己编译的5.15.10,我不知道是不是缺什么模块
你要是通过直接编译,直接在 framelessdialogbase.cpp
加上 #include
就行了。这个版本的 QT 我没有做过检查,你可以在 github 给我提个 issue 备忘一下,这个我周末处理。
你要是通过直接编译,直接在 framelessdialogbase.cpp
加上 #include
就行了。这个版本的 QT 我没有做过检查,你可以在 github 给我提个 issue 备忘一下,这个我周末处理。
好的,除了这个之外
src/dialog/gifsavedialog.cpp也缺少 #include
==========================================
现在卡在这里
/root/WingGifEditor2/src/class/gifcontentmodel.cpp: In member function 'void GifContentModel::cropFrames(const QRect&)':
/root/WingGifEditor2/src/class/gifcontentmodel.cpp:216:20: error: found ':' in nested-name-specifier, expected '::'
for (auto &img : _data) {
^
::
/root/WingGifEditor2/src/class/gifcontentmodel.cpp:216:16: error: 'img' has not been declared
for (auto &img : _data) {
^~~
/root/WingGifEditor2/src/class/gifcontentmodel.cpp:216:27: error: qualified-id in declaration before ')' token
for (auto &img : _data) {
^
/root/WingGifEditor2/src/class/gifcontentmodel.cpp:218:6: error: expected ';' before 'dataChanged'
}
^
;
/root/WingGifEditor2/src/class/gifcontentmodel.cpp:220:10:
emit dataChanged(this->index(0), this->index(_data.size() - 1));
~~~~~~~~~~~
/root/WingGifEditor2/src/class/gifcontentmodel.cpp:221:34: error: expected ')' before ';' token
updateLinkedListViewCurrent();
^
)
/root/WingGifEditor2/src/class/gifcontentmodel.cpp:216:9: note: to match this '('
for (auto &img : _data) {
^
/root/WingGifEditor2/src/class/gifcontentmodel.cpp:216:5: error: expected iteration declaration or initialization
for (auto &img : _data) {
^~~
/root/WingGifEditor2/src/class/gifcontentmodel.cpp: In member function 'void GifContentModel::scaleFrames(int, int)':
/root/WingGifEditor2/src/class/gifcontentmodel.cpp:268:20: error: found ':' in nested-name-specifier, expected '::'
for (auto &img : _data) {
^
::
/root/WingGifEditor2/src/class/gifcontentmodel.cpp:268:16: error: 'img' has not been declared
for (auto &img : _data) {
^~~
/root/WingGifEditor2/src/class/gifcontentmodel.cpp:268:27: error: qualified-id in declaration before ')' token
for (auto &img : _data) {
^
/root/WingGifEditor2/src/class/gifcontentmodel.cpp:271:6: error: expected ';' before 'dataChanged'
}
^
;
/root/WingGifEditor2/src/class/gifcontentmodel.cpp:273:10:
emit dataChanged(this->index(0), this->index(_data.size() - 1));
~~~~~~~~~~~
/root/WingGifEditor2/src/class/gifcontentmodel.cpp:274:34: error: expected ')' before ';' token
updateLinkedListViewCurrent();
^
)
/root/WingGifEditor2/src/class/gifcontentmodel.cpp:268:9: note: to match this '('
for (auto &img : _data) {
^
/root/WingGifEditor2/src/class/gifcontentmodel.cpp:268:5: error: expected iteration declaration or initialization
for (auto &img : _data) {
^~~
/root/WingGifEditor2/src/class/gifcontentmodel.cpp: In member function 'void GifContentModel::flipFrames(Qt::Orientation, int, qsizetype)':
/root/WingGifEditor2/src/class/gifcontentmodel.cpp:282:24: error: found ':' in nested-name-specifier, expected '::'
for (auto &img : _data) {
^
::
/root/WingGifEditor2/src/class/gifcontentmodel.cpp:282:20: error: 'img' has not been declared
for (auto &img : _data) {
^~~
/root/WingGifEditor2/src/class/gifcontentmodel.cpp:282:31: error: qualified-id in declaration before ')' token
for (auto &img : _data) {
^
/root/WingGifEditor2/src/class/gifcontentmodel.cpp:284:10: error: expected ';' before 'break'
}
^
;
break;
~~~~~
/root/WingGifEditor2/src/class/gifcontentmodel.cpp:285:9: error: expected primary-expression before 'break'
break;
^~~~~
/root/WingGifEditor2/src/class/gifcontentmodel.cpp:286:5: error: expected primary-expression before '}' token
}
^
/root/WingGifEditor2/src/class/gifcontentmodel.cpp:285:15: error: expected ')' before '}' token
break;
^
)
}
~
/root/WingGifEditor2/src/class/gifcontentmodel.cpp:282:13: note: to match this '('
for (auto &img : _data) {
^
/root/WingGifEditor2/src/class/gifcontentmodel.cpp:286:5: error: expected primary-expression before '}' token
}
^
/root/WingGifEditor2/src/class/gifcontentmodel.cpp:282:9: error: expected iteration declaration or initialization
for (auto &img : _data) {
^~~
/root/WingGifEditor2/src/class/gifcontentmodel.cpp:289:24: error: found ':' in nested-name-specifier, expected '::'
for (auto &img : _data) {
^
::
/root/WingGifEditor2/src/class/gifcontentmodel.cpp:289:20: error: 'img' has not been declared
for (auto &img : _data) {
^~~
/root/WingGifEditor2/src/class/gifcontentmodel.cpp:289:31: error: qualified-id in declaration before ')' token
for (auto &img : _data) {
^
/root/WingGifEditor2/src/class/gifcontentmodel.cpp:291:10: error: expected ';' before 'break'
}
^
;
break;
~~~~~
/root/WingGifEditor2/src/class/gifcontentmodel.cpp:292:9: error: expected primary-expression before 'break'
break;
^~~~~
/root/WingGifEditor2/src/class/gifcontentmodel.cpp:293:5: error: expected primary-expression before '}' token
}
^
/root/WingGifEditor2/src/class/gifcontentmodel.cpp:292:15: error: expected ')' before '}' token
break;
^
)
}
~
/root/WingGifEditor2/src/class/gifcontentmodel.cpp:289:13: note: to match this '('
for (auto &img : _data) {
^
/root/WingGifEditor2/src/class/gifcontentmodel.cpp:293:5: error: expected primary-expression before '}' token
}
^
/root/WingGifEditor2/src/class/gifcontentmodel.cpp:289:9: error: expected iteration declaration or initialization
for (auto &img : _data) {
^~~
/root/WingGifEditor2/src/class/gifcontentmodel.cpp: In member function 'void GifContentModel::rotateFrames(bool)':
/root/WingGifEditor2/src/class/gifcontentmodel.cpp:320:20: error: found ':' in nested-name-specifier, expected '::'
for (auto &img : _data) {
^
::
/root/WingGifEditor2/src/class/gifcontentmodel.cpp:320:16: error: 'img' has not been declared
for (auto &img : _data) {
^~~
/root/WingGifEditor2/src/class/gifcontentmodel.cpp:320:27: error: qualified-id in declaration before ')' token
for (auto &img : _data) {
^
/root/WingGifEditor2/src/class/gifcontentmodel.cpp:322:6: error: expected ';' before 'dataChanged'
}
^
;
emit dataChanged(this->index(0), this->index(_data.size() - 1));
~~~~~~~~~~~
/root/WingGifEditor2/src/class/gifcontentmodel.cpp:324:34: error: expected ')' before ';' token
updateLinkedListViewCurrent();
^
)
/root/WingGifEditor2/src/class/gifcontentmodel.cpp:320:9: note: to match this '('
for (auto &img : _data) {
^
/root/WingGifEditor2/src/class/gifcontentmodel.cpp:320:5: error: expected iteration declaration or initialization
for (auto &img : _data) {
^~~
你编译的qt是什么版本呢
好的,除了这个之外
src/dialog/gifsavedialog.cpp也缺少 #include
==========================================
现在卡在这里
/root/WingGifEditor2/src/class/gifcontentmodel.cpp: In member function 'void GifContentModel::cropFrames(const QRect&)':
/root/WingGifEditor2/src/class/gifcontentmodel.cpp:216:20: error: found ':' in nested-name-specifier, expected '::'
for (auto &img : _data) {
^
::
/root/WingGifEditor2/src/class/gifcontentmodel.cpp:216:16: error: 'img' has not been declared
for (auto &img : _data) {
^~~
/root/WingGifEditor2/src/class/gifcontentmodel.cpp:216:27: error: qualified-id in declaration before ')' token
for (auto &img : _data) {
^
/root/WingGifEditor2/src/class/gifcontentmodel.cpp:218:6: error: expected ';' before 'dataChanged'
}
^
;
/root/WingGifEditor2/src/class/gifcontentmodel.cpp:220:10:
emit dataChanged(this->index(0), this->index(_data.size() - 1));
~~~~~~~~~~~
/root/WingGifEditor2/src/class/gifcontentmodel.cpp:221:34: error: expected ')' before ';' token
updateLinkedListViewCurrent();
^
)
/root/WingGifEditor2/src/class/gifcontentmodel.cpp:216:9: note: to match this '('
for (auto &img : _data) {
^
/root/WingGifEditor2/src/class/gifcontentmodel.cpp:216:5: error: expected iteration declaration or initialization
for (auto &img : _data) {
^~~
/root/WingGifEditor2/src/class/gifcontentmodel.cpp: In member function 'void GifContentModel::scaleFrames(int, int)':
/root/WingGifEditor2/src/class/gifcontentmodel.cpp:268:20: error: found ':' in nested-name-specifier, expected '::'
for (auto &img : _data) {
^
::
/root/WingGifEditor2/src/class/gifcontentmodel.cpp:268:16: error: 'img' has not been declared
for (auto &img : _data) {
^~~
/root/WingGifEditor2/src/class/gifcontentmodel.cpp:268:27: error: qualified-id in declaration before ')' token
for (auto &img : _data) {
^
/root/WingGifEditor2/src/class/gifcontentmodel.cpp:271:6: error: expected ';' before 'dataChanged'
}
^
;
/root/WingGifEditor2/src/class/gifcontentmodel.cpp:273:10:
emit dataChanged(this->index(0), this->index(_data.size() - 1));
~~~~~~~~~~~
/root/WingGifEditor2/src/class/gifcontentmodel.cpp:274:34: error: expected ')' before ';' token
updateLinkedListViewCurrent();
^
)
/root/WingGifEditor2/src/class/gifcontentmodel.cpp:268:9: note: to match this '('
for (auto &img : _data) {
^
/root/WingGifEditor2/src/class/gifcontentmodel.cpp:268:5: error: expected iteration declaration or initialization
for (auto &img : _data) {
^~~
/root/WingGifEditor2/src/class/gifcontentmodel.cpp: In member function 'void GifContentModel::flipFrames(Qt::Orientation, int, qsizetype)':
/root/WingGifEditor2/src/class/gifcontentmodel.cpp:282:24: error: found ':' in nested-name-specifier, expected '::'
for (auto &img : _data) {
^
::
/root/WingGifEditor2/src/class/gifcontentmodel.cpp:282:20: error: 'img' has not been declared
for (auto &img : _data) {
^~~
/root/WingGifEditor2/src/class/gifcontentmodel.cpp:282:31: error: qualified-id in declaration before ')' token
for (auto &img : _data) {
^
/root/WingGifEditor2/src/class/gifcontentmodel.cpp:284:10: error: expected ';' before 'break'
}
^
;
break;
~~~~~
/root/WingGifEditor2/src/class/gifcontentmodel.cpp:285:9: error: expected primary-expression before 'break'
break;
^~~~~
/root/WingGifEditor2/src/class/gifcontentmodel.cpp:286:5: error: expected primary-expression before '}' token
}
^
/root/WingGifEditor2/src/class/gifcontentmodel.cpp:285:15: error: expected ')' before '}' token
break;
^
)
}
~
/root/WingGifEditor2/src/class/gifcontentmodel.cpp:282:13: note: to match this '('
for (auto &img : _data) {
^
/root/WingGifEditor2/src/class/gifcontentmodel.cpp:286:5: error: expected primary-expression before '}' token
}
^
/root/WingGifEditor2/src/class/gifcontentmodel.cpp:282:9: error: expected iteration declaration or initialization
for (auto &img : _data) {
^~~
/root/WingGifEditor2/src/class/gifcontentmodel.cpp:289:24: error: found ':' in nested-name-specifier, expected '::'
for (auto &img : _data) {
^
::
/root/WingGifEditor2/src/class/gifcontentmodel.cpp:289:20: error: 'img' has not been declared
for (auto &img : _data) {
^~~
/root/WingGifEditor2/src/class/gifcontentmodel.cpp:289:31: error: qualified-id in declaration before ')' token
for (auto &img : _data) {
^
/root/WingGifEditor2/src/class/gifcontentmodel.cpp:291:10: error: expected ';' before 'break'
}
^
;
break;
~~~~~
/root/WingGifEditor2/src/class/gifcontentmodel.cpp:292:9: error: expected primary-expression before 'break'
break;
^~~~~
/root/WingGifEditor2/src/class/gifcontentmodel.cpp:293:5: error: expected primary-expression before '}' token
}
^
/root/WingGifEditor2/src/class/gifcontentmodel.cpp:292:15: error: expected ')' before '}' token
break;
^
)
}
~
/root/WingGifEditor2/src/class/gifcontentmodel.cpp:289:13: note: to match this '('
for (auto &img : _data) {
^
/root/WingGifEditor2/src/class/gifcontentmodel.cpp:293:5: error: expected primary-expression before '}' token
}
^
/root/WingGifEditor2/src/class/gifcontentmodel.cpp:289:9: error: expected iteration declaration or initialization
for (auto &img : _data) {
^~~
/root/WingGifEditor2/src/class/gifcontentmodel.cpp: In member function 'void GifContentModel::rotateFrames(bool)':
/root/WingGifEditor2/src/class/gifcontentmodel.cpp:320:20: error: found ':' in nested-name-specifier, expected '::'
for (auto &img : _data) {
^
::
/root/WingGifEditor2/src/class/gifcontentmodel.cpp:320:16: error: 'img' has not been declared
for (auto &img : _data) {
^~~
/root/WingGifEditor2/src/class/gifcontentmodel.cpp:320:27: error: qualified-id in declaration before ')' token
for (auto &img : _data) {
^
/root/WingGifEditor2/src/class/gifcontentmodel.cpp:322:6: error: expected ';' before 'dataChanged'
}
^
;
emit dataChanged(this->index(0), this->index(_data.size() - 1));
~~~~~~~~~~~
/root/WingGifEditor2/src/class/gifcontentmodel.cpp:324:34: error: expected ')' before ';' token
updateLinkedListViewCurrent();
^
)
/root/WingGifEditor2/src/class/gifcontentmodel.cpp:320:9: note: to match this '('
for (auto &img : _data) {
^
/root/WingGifEditor2/src/class/gifcontentmodel.cpp:320:5: error: expected iteration declaration or initialization
for (auto &img : _data) {
^~~
你编译的qt是什么版本呢
5.15.2 和 6.6.2 和 6.7.3 。你这报错我就没见过了,就和不支持 for range 特性一样。😂
5.15.2 和 6.6.2 和 6.7.3 。你这报错我就没见过了,就和不支持 for range 特性一样。😂
换用clang编译成功了
src/settings/editorsettingdialog.h也需要加一个 #include
hex编辑器那个也是,用gcc就有一些报错,换clang就过了,不知道啥毛病。
另外,标题还是十六进制编辑器呢
=========================
按了半天空格发现没有空格播放
而且这个播放速度为什么这么鬼畜,基本上1秒播完了我5秒的动画
换用clang编译成功了
src/settings/editorsettingdialog.h也需要加一个 #include
hex编辑器那个也是,用gcc就有一些报错,换clang就过了,不知道啥毛病。
另外,标题还是十六进制编辑器呢
=========================
按了半天空格发现没有空格播放
而且这个播放速度为什么这么鬼畜,基本上1秒播完了我5秒的动画
给一个复现动画图呗,记录的问题(包括标题)我放到周末改。我用彩虹猫动画测试是正常的。空格播放和暂停动画我觉得确实更符合人的操作习惯。
羽云 GIF 编辑器2
是我之前项目羽云 GIF 编辑器
的重构版本,相对于老版本的WingGifEditor
,它修复了一些 Bug,并且具有了小小的插件系统,用于实现扩展图像编辑。并且具有更现代的用户界面,更快的 Gif 图像加载速度和保存速度以及相对较低的内存占用,更好的图像编辑体验。开源协议是 AGPL-3.0。在老版本的这个问题也得到了修复,虽然没有人回答( https://gitee.com/wing-cloud/wing-gif-editor/issues/I5JR3S ):
现在:
这个软件极大的继承了我的羽云十六进制编辑器2的成果,功能得到了很大的提升,让它真正的成为一个好用的 GIF 编辑器。
有一说一 QListView 虽然用起来很麻烦,但对应用功能和性能的提升还是很高的。
Github:https://github.com/Wing-summer/WingGifEditor2
Gitee:https://gitee.com/wing-cloud/WingGifEditor2 (镜像)