最近需要给人写点基于QtWebkit的代码,算是领教了Qt编程的痛苦之处。

  1. QNetworkConfigurationManager::isOnline() 只有在编译平台上能运行,拷贝到其他Windows系统中一直返回false。
  2. Qt::WindowStaysOnTopHint在某些环境下经常无效。
  3. Qt4.8.4版本的QtWebkit在Win7 32bit 上播放YouTube视频会出现崩溃现象。

每一点都是致命的,直接导致了迟迟无法收工。这几天虽然染病在身,却依然在各个不同的平台上进行测试。有一些进一步的理解,但是没有完美的解决方案。

1 对于QNetworkConfigurationManager::isOnline() 来说,虽然采用同一个Qt安装包,可能的问题是 Qt 安装包会在最后进行Platform Patch,替换QtCore.dll和QtNetwork.dll之类的文件。这样对于希望制作独立的安装来说简直是一个噩梦。只有约定的msi安装包如何完成也是一个问题。

*** 后来发现其中一个原因是没有拷贝依赖的plugin文件。Depends 里根本发现不了,运行程序时尝试删除plugin文件夹才找到所有依赖的plugin文件。

2 Qt::WindowStaysOnTopHint在WinXP可以工作,但是Win7或者Win8下就有各种问题,时常无法将窗口置顶。比较诡异的是,将文件放到一些文件夹下无效,换个文件夹又有效了,匪夷所思。

最后很无奈,加了以下的代码:

void MainWindow::showEvent(QShowEvent * event)
{
if (event->type() == QEvent::Show)
{
activateWindow();
setWindowFlags(this->windowFlags() | Qt::WindowStaysOnTopHint);
SetTopMost();
}
}

3 QWebView崩溃的位置还有所差别,一会是heap问题,一会是消息处理问题,毫无头绪。换成Qt5.0.2倒是没有发现问题,就是依赖的文件一下子增加了好多。

有时候使用Qt的话,还是挺悲惨的,很容易掉坑里。这里不免要吐槽一下,QtWebkit编译一次就是几小时,实在痛苦。

// QMainWindow 置顶
setWindowFlags(Qt::Widget | Qt::FramelessWindowHint | Qt::WindowSystemMenuHint | Qt::WindowStaysOnTopHint);
>  QtWebKitd4.dll!__NPN_DeallocateObject()  + 0xe bytes  C++

>  QtCored4.dll!QEventDispatcherWin32::processEvents(QFlags<enum QEventLoop::ProcessEventsFlag> flags)  Line   C++

Qt编程之悲惨世界的更多相关文章

  1. qt编程入门

    面对qt编程,必须先知道qt中常用的类: QPushButton按钮类.QLabel标签类.QMessageBox对话框类.QCheckBox.QAction.QMenu.QStatusBar.QTo ...

  2. Visual Studio下Qt编程中对中文的处理

    Visual Studio下Qt编程中对中文的处理 本文为原创文章,原文地址http://www.cnblogs.com/c4isr/p/qt_develop_in_vs.html Visual St ...

  3. QT笔记(1)--QT编程环境搭建

    一.QT简介 Qt  是一个1991年由奇趣科技开发的跨平台C++图形用户界面应用程序开发框架.它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器.Qt是面向对象的框架,使用特殊 ...

  4. Qt编程学习网站

    http://blog.csdn.net/k122769836/article/details/8637677 QT - little_su - 博客频道 - CSDN.NET Qt - 1+1=2 ...

  5. 在windows下的QT编程中的_TCHAR与QString之间的转换

    由于在windows下的QT编程中,如果涉及到使用微软的API,那么不可避免使用_TCHAR这些类型,因此在网上查了一下,其中一个老外的论坛有人给出了这个转换,因此在这里做一下笔记 : )#ifdef ...

  6. 在Ubuntu18.04中QT编程的环境构建(转)

    在Ubuntu18.04中QT编程的环境构建 原点分析 百家号06-2110:14 如果说QT大家觉得陌生的话,那么 Windows 早年推出的C++图形用户界面的应用程序开发框架MFC,应该是耳熟能 ...

  7. vs+qt编程相关

    vs+qt编程的那些事 以下以helloqt项目为例 文件构成 Form Files 窗体文件 /*.ui 界面文件 Generated Files 界面生成文件 /ui_helloqt.h 添加带界 ...

  8. Qt 编程指南

    Qt 编程指南 持续关注一本正在编写的Qt编程指南,期待作者早日完成创作.

  9. 零基础学QT编程

    吴迪.2010.1 北京航空航天大学出版社   Qt资源 CSDN QT http://bbs.csdn.net/forums/Qt/ QT编程网 http://www.qtbcw.com/ 编程论坛 ...

随机推荐

  1. Dog test1 = new Dog()的解释

  2. iOS—— iOS 内存管理:增长+泄漏

    1.如果是循环中局部变量data没有释放导致的,给NSData 手动添加释放池 @autoreleasepool { your code } 2.url 转变字典key值的时候出现内存暴增! //设置 ...

  3. Java 8新特性之接口改善(八恶人-1)

    Daisy Donergue 多莫歌·黛西 “By woman, you mean her?” 她也能叫女人? Java 8在13年9月发布,写这篇博文的时间已经是17年12月份了.来的有点晚,但是有 ...

  4. Problem A: 选举 解题报告

    Problem A: 选举 题意 给出一个投票过程.有\(n\)个选民和\(m\)个候选人,每个选民\(i\)有个不重且有序的可投集合\(\{a_i\}\). 对于第一轮投票,选民\(i\)会投给\( ...

  5. 【bzoj3932】 CQOI2015—任务查询系统

    http://www.lydsy.com/JudgeOnline/problem.php?id=3932 (题目链接) 题意 给出$m$个区间,每个区间有一个权值,$n$组询问,每次询问在位置$x$权 ...

  6. 解题:WC 2018 州区划分

    题面 WC之前写的,补一补,但是基本就是学新知识了 首先可以枚举子集$3^n$转移,优化是额外记录每个集合选取的个数,然后按照选取个数从小到大转移.转移的时候先FWT成“点值”转移完了IFWT回去乘逆 ...

  7. 前端常用功能记录(二)—datatables表格

    并不是所有的后台开发都有美工和前端工程师来配合做页面,为了显示数据并有一定的美感,jQuery的DataTables插件对于像我这样的前端菜鸟来说真是雪中送炭,当然对于专业的前端开发者来说它更是锦上添 ...

  8. Docker:搭建私有仓库(Registry 2.4)

    一.背景 首先,Docker Hub是一个很好的用于管理公共镜像的地方,我们可以在上面找到想要的镜像(Docker Hub的下载量已经达到数亿次):而且我们也可以把自己的镜像推送上去.但是,有的时候, ...

  9. SQL Server - 开窗函数

    -- 开窗函数:在结果集的基础上进一步处理(聚合操作) SELECT * FROM dbo.Student S# Sname Sage Ssex ---------- ---------- ----- ...

  10. 【CSS】clear清除浮动

    clear清除浮动1.作用: 规定元素的某一侧不允许存在浮动元素 2.值: 3.应用: 清除其他浮动元素对其产生的影响 <!DOCTYPE html> <html lang=&quo ...