
QT
豆浆D油条
嵌入式专业毕业,喜欢研究底层和算法。追求高效性能
展开
-
从QT的deleteLater()和对象树引发的一个思考:如果QObject的Children里存在一个不是通过new分配出来的地址空间时,会发生什么事?
QObject有一个parent、children和deleteLater,qt是通过这些去做实现对象树和内存管理。而parent和children保存的都是指针,而指针变量可以通过new或者对局部变量取地址等方式获得。deleteLater则是产生一个事件,等回到事件处理时,才会释放这个对象。原创 2025-04-17 15:21:33 · 388 阅读 · 0 评论 -
QT VS编译环境无法打开包括文件type_traits
个人不推荐配置环境编译,除非你非常熟,因为配置环境变量需要你知道有哪些路径需要添加,否则添加了还不行的话,你都不知道是什么原因。如果你的VS安装好后,有了不同的编译版本,同时也安装了qt-vsaddin,qt也安装好了。像我的这样,qt选项的构建套件配置也没有任何警告或错误提示,qt没有把对应的版本的VS编译环境识别,需要自己添加时。上面的方法我都试了都没用,最后发现QT->工具->选项->kits->编译器配置时,有个选项没选。红色框是VS的脚本文件,不同的版本有不同的脚本文件可以选。原创 2023-08-18 10:51:13 · 3390 阅读 · 0 评论 -
QGraphicsView放大时,paint有时不被调用,导致图像绘制不出来(2)
这问题是我在不继承QGraphicsLineItem(调用setLine),而是继承QGraphicsItem时,绘制曲线导致的。通过调试,发现boundingRect并不是每次绘制都会调用,所以当我们改变了QGraphicsItem::boundingRect时,需要场景(scene)调用该item的boundingRect来获取到新的区域,以便判断该QGraphicsItem是不是在QGraphicsView的可视范围内,从而觉得需不需要调用QGraphicsItem::paint来绘制。原创 2023-08-16 15:56:10 · 900 阅读 · 2 评论 -
QT Critical error detected c0000374
在使用QT写GraphicsView时,运行程序添加Item时,无缘无故报错了,debug调试也是跳到QT源码上面去,还都不是报同一个位置的错误,有些还是new的位置报错。而报错信息是“Critical error detected c0000374”,搜出来的文章也都是内存不足、越界之类,还有说用智能指针的问题,但以上问题我都没有。当内存充足时,new还能报错,那应该是跟内存没多大关系了。加上在代码不改或者一些毫无影响的改动的情况下,报错还不是在同一个地方,我觉得可以排除内存不足、越界之类。1、但程序蹦原创 2021-07-30 12:38:45 · 5147 阅读 · 5 评论 -
QGraphicsView放大时,paint有时不被调用,导致图像绘制不出来(1)
缩放的时候没有任何问题,但放大到某个范围就出现下面的情况。现象如如下三张图,原本绘制了两个多边形,放大了就发现右边的多边形没了(图2),缩放回去又出现了,再放大两次,两个都没了(图3),缩放回去又出现。一开始也找不到相关解决方法,后来突然想到了QGraphicsItem::boundingRect是跟绘制有关,给QGraphicsItem::paint做绘制依据,所以出现这现象应该是跟我返回的boundingRect有关。经过实践,确实是跟boundingRect有关,一旦boundingRect的原创 2021-06-16 16:26:12 · 2193 阅读 · 5 评论 -
解决QtQAxBase: Error calling IDispatch member SaveAs: Exception thrown by server
workbook->dynamicCall(“SaveAs (const QString &)”, file);file是不能用’/’,如果调QCoreApplication::applicationDirPath()等QT的API获取路径的,都需要调replace(’/’, ‘\’)把’/‘替换成’\’,或者自行把’/‘替换成’\’。注:workbook的来源QAxObject *excel = nullptr; QAxObject *workbooks = nullptrQAx原创 2020-07-14 22:41:21 · 6498 阅读 · 0 评论 -
QT(qCompress和qUncompress)与zlib(compress和uncompress)相互调用
通过对qCompress和compress压缩的数据进行打印,可以知道qCompress比compress的数据长四个字节原创 2020-05-20 16:52:07 · 5241 阅读 · 2 评论 -
编译器的堆空间不足
我用debug模式一点事都没有,结果切换回release编译报了10个错误,全是"编译器的堆空间不足"。网上找到有条说跟内存有关,然后我看了下任务管理器,16G内存用了10G,但还是报这个错,后来把写软件关联,把内存降到了3G多,然后再编译就通过了。很奇怪...原创 2020-04-10 16:00:38 · 6625 阅读 · 2 评论 -
QTableWidget setitem不显示
1、如果是调用insertRow插入行的,再调setRowHeight设置行高就可以了。2、如果不是,那可能是rowCount返回的是0,这需要调setRowCount设置行数或者调insertRow插入行,再调setRowHeight设置行高就可以了。...原创 2020-04-09 10:49:05 · 4437 阅读 · 2 评论 -
VS编译带QT的工程:error MSB6006: “cmd.exe”已退出,代码为 3。
因为我的工程是拷贝被人的,所以QT路径是不一样的。1. 需要在VS上安装QT插件,然后点击QT VS Tools的Qt Options去配置你的QT编译版本2. 点击ADD选择你的编译版本,如msvc2017,msvc2017_64,msvc2019等。如果已经配置过了可以忽略这一步3. 点击下图位置的选项,然后弹出个窗口点是,最后就可以编译通过了...原创 2019-11-08 20:43:49 · 4462 阅读 · 0 评论 -
QT获取信号的发送者
兰布达表达式(Lambda)for(int i = 0; i < 5; i++){ QMessageBox *messageBox = new QMessageBox; messageBox ->setText(QString::number(i)); messageBox ->setWindowModality(Qt::NonModal); messageBox -...原创 2018-12-06 16:46:44 · 7175 阅读 · 0 评论 -
QT链接外部库的时候出现无法解析的外部符号
出现无法解析的外部符号无非就是找不到那个符号(函数)。除了常见的那几种解决方式,还有一种情况是编译库的位数不对,比如编译库用的编译器是32位的,但你的程序是用64位编译器的,这时也会出现这种情况。我出现这种情况的时候,把QT常用的那几种解决方式都没办法解决,直到我把QT的工程去用VS编译的时,在VS的错误列表中看的了一条VS提示的警告。![在这里插入图片描述](https://img-blog...原创 2018-11-23 17:30:20 · 3455 阅读 · 0 评论 -
QT MSVC中文编译出错error: C2001: 常量中有换行符
QT上用MSVC去编译部分含有中文的字符串时会出现编译错误error: C2001: 常量中有换行符,但用MinGW就不会。需在后面加个正常的字符才能正常编译,但出现乱码了。其编码如下图,明显的看着编码不对。 如果想都编译成功,那就需要在设置里把“文件编码”的UTF-8 BOM改成“如果编码是UTF-8则添加”。如下图 但这样做直接编译出来的都是乱码。编码如下图 需用QStrin...原创 2018-08-02 11:42:01 · 14892 阅读 · 19 评论