我正在疯狂地尝试让它在 MinGW 32 位中工作。它适用于我尝试过的所有其他平台。
我想要做的就是将 > 4GB 文件的大小转换为 64 位 int。
这在其他平台上运行良好:
#define _FILE_OFFSET_BITS 64
#include <sys/stat.h>
int64_t fsize(const char *filename) {
struct stat st;
if (stat(filename, &st) == 0)
return st.st_size;
return -1;
}
Run Code Online (Sandbox Code Playgroud)
根据我在网上找到的各种建议,我尝试在上述代码之前添加以下定义:
#define _LARGEFILE_SOURCE 1
#define _LARGEFILE64_SOURCE 1
#define __USE_LARGEFILE64 1
Run Code Online (Sandbox Code Playgroud)
还尝试过:
#ifdef __MINGW32__
#define off_t off64_t
#endif
Run Code Online (Sandbox Code Playgroud)
最后尝试将 -D_FILE_OFFSET_BITS=64 添加到 gcc 标志(应该与上面的定义相同......)
没有运气。返回的 int64_t 仍然被截断为 32 位值。
在 MinGW 32 位中确定 64 位文件大小的正确方法是什么?
谢谢!
我有QTableView一列使用 aQLineEdit作为其编辑器委托,其他列需要在用户键入时动态更新QLineEdit(例如,其中一列包含在 中键入的文本的长度,QLineEdit它应该作为用户更新类型,而不是等待他们按 Enter 提交)。
我使用了以下代码:Qt:在编辑 QTableView 项目数据时发出信号,而不是在编辑完成后发出信号?这主要是有效的。它将QLineEdit textChanged()信号连接到编辑器的commitData()信号。
这段代码的问题在于,当用户键入时,QLineEdit的插入光标总是跳到末尾。如果您将文本附加到行尾,那很好。但是如果用户想在行的中间插入或编辑文本,每输入一个字母,文本插入光标就会跳到QLineEdit. 每次击键后,他们必须重新定位光标以在中间完成插入/编辑。
如果我禁用映射器,则光标不会跳转,因此它不是编辑器委托所固有的;只有在使用上面链接的问题中的代码时才会发生这种情况。
我查看了 和 的代码QLineEdit textChanged(),commitData()但我无法弄清楚是什么导致光标跳到QLineEdit. 有任何想法吗?谢谢!