﻿<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>学习日记 &#187; Qt Gui</title>
	<atom:link href="https://www.softwareace.cn/?cat=19&#038;feed=rss2" rel="self" type="application/rss+xml" />
	<link>https://www.softwareace.cn</link>
	<description>时刻想着为自己的产品多做一些对他好的事情</description>
	<lastBuildDate>Fri, 20 Mar 2026 06:58:28 +0000</lastBuildDate>
	<language>zh-CN</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	
	<item>
		<title>vs2013 静态编译Qt和配置方法</title>
		<link>https://www.softwareace.cn/?p=1688</link>
		<comments>https://www.softwareace.cn/?p=1688#comments</comments>
		<pubDate>Thu, 17 Aug 2017 09:37:47 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[Qt Gui]]></category>

		<guid isPermaLink="false">http://www.softwareace.cn/?p=1688</guid>
		<description><![CDATA[编译方法很简单，请看文章： http://wenku.baidu.com/view/6749dbab700ab [&#8230;]]]></description>
				<content:encoded><![CDATA[<div id="article_content" class="article_content tracking-ad" style="color: #555555;" data-mod="popu_307" data-dsm="post">
<p>编译方法很简单，请看文章：</p>
<p>http://wenku.baidu.com/view/6749dbab700abb68a982fba6</p>
<p>&nbsp;</p>
<p>需要主要的是：</p>
<p>1：opengl 支持，如文章</p>
<p>2：opengl不支持，如下：</p>
<p><span style="color: #ff0000;">configure -confirm-license -opensource -platform win32-msvc2013  -debug-and-release -static -prefix &#8220;E:\Qt\5.3.2-static-vs2013&#8243; -qt-sql-sqlite -qt-sql-odbc -plugin-sql-sqlite -plugin-sql-odbc </span><strong><span style="color: #006600;">-no-opengl</span></strong><span style="color: #ffcc00;"> -</span><span style="color: #ff0000;">qt-zlib -qt-libpng -qt-libjpeg -qt-freetype -no-qml-debug -nom7zake tests -nomake examples -skip qtwebkit</span></p>
<p><span style="color: #ff0000;"> </span></p>
<p><span style="color: #ff0000;">各个选项的名字可以 configure -h  查看！</span></p>
<p>&nbsp;</p>
<p>主要是配置方法，上面文章的配置方式是有误的。编译会提示找不到相关的平台插件，即plugins\platforms</p>
<p>在vs 这样配置：</p>
<p>1：配置插件</p>
<p><img src="http://img.blog.csdn.net/20150305152903704?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvendqNjEzMzYxOTA=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" /></p>
<p>&nbsp;</p>
<p>2： 配置插件目录</p>
<p>&nbsp;</p>
<p><img src="http://img.blog.csdn.net/20150305153006759?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvendqNjEzMzYxOTA=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" /></p>
<p>&nbsp;</p>
<p>3：main.cpp 配置</p>
<p>&nbsp;</p>
<p><img src="http://img.blog.csdn.net/20150305152933388?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvendqNjEzMzYxOTA=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" /></p>
</div>
<div class="bdsharebuttonbox tracking-ad bdshare-button-style0-16" style="color: #000000;" data-mod="popu_172" data-bd-bind="1502962585675"></div>
<div id="digg" style="color: #000000;">
<dl id="btnDigg" class="digg digg_disable" style="color: #ffffff;">
<dt>顶</dt>
<dd>1</dd>
</dl>
<p> http://blog.csdn.net/zwj61336190/article/details/44083099
<dl id="btnBury" class="digg digg_disable" style="color: #ffffff;">
<dt>踩</dt>
<dd>0</dd>
</dl>
</div>
]]></content:encoded>
			<wfw:commentRss>https://www.softwareace.cn/?feed=rss2&#038;p=1688</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Qt 单例方法</title>
		<link>https://www.softwareace.cn/?p=1539</link>
		<comments>https://www.softwareace.cn/?p=1539#comments</comments>
		<pubDate>Mon, 14 Nov 2016 08:41:21 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[Qt Gui]]></category>

		<guid isPermaLink="false">http://www.softwareace.cn/?p=1539</guid>
		<description><![CDATA[[crayon-6a1b36c83f50b955747537/] &#160;]]></description>
				<content:encoded><![CDATA[<p></p><pre class="crayon-plain-tag">//xx.h
static AccountsEngine* instance();

//xx.cpp
#include "xx.h"
Q_GLOBAL_STATIC(AccountsEngine, accountsEngine)
AccountsEngine *AccountsEngine::instance()
{
    return accountsEngine;
}</pre><p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>https://www.softwareace.cn/?feed=rss2&#038;p=1539</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>log4qt 使用</title>
		<link>https://www.softwareace.cn/?p=1525</link>
		<comments>https://www.softwareace.cn/?p=1525#comments</comments>
		<pubDate>Wed, 28 Sep 2016 03:28:53 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[Qt Gui]]></category>

		<guid isPermaLink="false">http://www.softwareace.cn/?p=1525</guid>
		<description><![CDATA[Log4Qt 使用笔记(一) http://blog.csdn.net/dbzhang800/article/ [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><a style="color: #000000;" href="http://blog.csdn.net/dbzhang800/article/details/6916948">Log4Qt 使用笔记(一)</a></p>
<p>http://blog.csdn.net/dbzhang800/article/details/6916948</p>
<p><a style="color: #666666;" href="http://blog.csdn.net/dbzhang800/article/details/6917172">Log4Qt 使用笔记(二)</a></p>
<p>http://blog.csdn.net/dbzhang800/article/details/6917172</p>
<p><a style="color: #000000;" href="http://blog.csdn.net/dbzhang800/article/details/6917462">Log4Qt使用笔记(三)</a></p>
<p>http://blog.csdn.net/dbzhang800/article/details/6917462</p>
]]></content:encoded>
			<wfw:commentRss>https://www.softwareace.cn/?feed=rss2&#038;p=1525</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Qt资料大全（GitHub、书籍、论坛、博客等。。。）</title>
		<link>https://www.softwareace.cn/?p=1457</link>
		<comments>https://www.softwareace.cn/?p=1457#comments</comments>
		<pubDate>Mon, 27 Jun 2016 01:14:28 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[Qt Gui]]></category>

		<guid isPermaLink="false">http://www.softwareace.cn/?p=1457</guid>
		<description><![CDATA[版权声明：进步始于交流，收获源于分享！纯正开源之美，有趣、好玩、靠谱。。。作者：一去丶二三里 目录(?)[+] [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>版权声明：进步始于交流，收获源于分享！纯正开源之美，有趣、好玩、靠谱。。。作者：一去丶二三里<br />
目录(?)[+]<br />
简述</p>
<p>发福利了、发福利了、发福利了，重要的事情说三遍。。。</p>
<p>为了方便更多童鞋了解、学习Qt，现将相关资源进行整理，主要内容包括：Qt官网、编码风格、GitHub &#038; Third-Party、社区论坛、博客、书籍等。</p>
<p>满满的都是干货，独乐乐不如众乐乐。。。</p>
<p>简述<br />
Qt官网<br />
编码风格<br />
GitHub Third-Party<br />
社区论坛<br />
博客<br />
书籍<br />
更多<br />
Qt官网</p>
<p>Qt官网：https://www.qt.io</p>
<p>Qt下载：http://www.qt.io/download</p>
<p>Qt所有下载：http://download.qt.io/archive/qt</p>
<p>Qt官方发布下载：http://download.qt.io/official_releases/qt</p>
<p>Open Source下载：http://www.qt.io/download-open-source/#section-2</p>
<p>Qt WiKi：https://wiki.qt.io/Main_Page</p>
<p>编码风格</p>
<p>Qt Coding Style</p>
<p>http://wiki.qt.io/Qt_Coding_Style（low-level）</p>
<p>http://wiki.qt.io/Coding_Conventions（ higher-level ）<br />
Google开源项目风格指南 </p>
<p>http://zh-google-styleguide.readthedocs.io/en/latest</p>
<p>里面包含五份（C++ 、Objective-C、Python 、JSON、Shell ）中文版的风格指南。</p>
<p>C coding style guidelines </p>
<p>http://www.quinapalus.com/coding.html</p>
<p>C++ Coding Standard </p>
<p>http://www.possibility.com/Cpp/CppCodingStandard.html</p>
<p>GitHub &#038; Third-Party</p>
<p>QtProject </p>
<p>https://github.com/qtproject</p>
<p>各种强大的Qt项目及丰富的Qt库。</p>
<p>Awesome Qt<br />
一系列强大的C/C++框架、库、资源和其它好东西。</p>
<p>https://insideqt.github.io/awesome-qt</p>
<p>https://github.com/fffaraz/awesome-cpp</p>
<p>http://fffaraz.github.io/awesome-cpp</p>
<p>inqlude </p>
<p>https://inqlude.org</p>
<p>Qt库存档 &#8211; 为Qt应用程序开发人员提供了所有现有的库。</p>
<p>社区论坛</p>
<p>国外论坛：</p>
<p>Qt-Centre： </p>
<p>http://www.qtcentre.org</p>
<p>一个非常全面的外国网站，有forum、wiki、docs、blogs等。</p>
<p>Qt-forum </p>
<p>http://www.qtforum.org</p>
<p>比较有名的国际Qt编程论坛。</p>
<p>Qt-Prop </p>
<p>http://qt-prop.org</p>
<p>可以找到很多专属的Qt应用。</p>
<p>Qt-Apps </p>
<p>http://qt-apps.org</p>
<p>可以找到很多免费的Qt应用，获得源码来学习、研究，使用时请遵守相关开源协议。</p>
<p>KDE-Apps </p>
<p>http://kde-apps.org</p>
<p>用过Linux/KDE的应该比较熟悉，里面有许多KDE-Desktop相关的应用。</p>
<p>Qt Software </p>
<p>http://www.qtsoftware.com</p>
<p>提供越来越多的第三方商业软件和开源软件的Qt用户社区。</p>
<p>QUIt Coding </p>
<p>http://quitcoding.com</p>
<p>一群享受前沿技术开发的人才，Qt官方大使项目的成员。</p>
<p>国内论坛：</p>
<p>CSDN Qt论坛 </p>
<p>http://bbs.csdn.net/forums/Qt</p>
<p>作为中国最大的IT社区和服务平台，CSDN也在持续的关注Qt的发展，Qt技术社区也已经上线很久了，可以在里面进行知识传播 &#8211; 提问、分享自己的一些学习心得、资料等。</p>
<p>QTCN开发网 </p>
<p>http://www.qtcn.org</p>
<p>国内最早、最活跃的Qt中文社区，内容丰富、覆盖面广、在线人数众多，上面有很多热心、无私的Qt爱好者，他们会帮助初学者尽快的入门。</p>
<p>Qter开源社区 </p>
<p>http://www.qter.org</p>
<p>致力于Qt普及工作！里面富含Qter们开发的实用开源项目和作品，以及一系列优秀的原创教程 &#8211; 图文并茂、简单易学，力争帮助每一位初学者快速入门。</p>
<p>建议大家经常多去浏览一下，会有很多收获，技术文章往往有一定的深度，初学者可能会不太适应。</p>
<p>博客</p>
<p>一去丶二三里 </p>
<p>http://blog.csdn.net/liang19890820</p>
<p>纯正开源之美，有趣、好玩、靠谱。。。</p>
<p>齐亮 </p>
<p>http://qihome.org</p>
<p>修身-“齐家”-治天下。</p>
<p>豆子 </p>
<p>http://www.devbean.net</p>
<p>Colorful Technologies… 《Qt学习之路》系列很不错。</p>
<p>1+1=10 </p>
<p>http://blog.csdn.net/dbzhang800</p>
<p>简简单单，我的小屋…</p>
<p>foruok </p>
<p>http://blog.csdn.net/foruok</p>
<p>关注程序员的职业规划，愿更多人找到适合自己的修行路。</p>
<p>QtDebug </p>
<p>http://qtdebug.com</p>
<p>我们所做的事，所写的代码，都已经被其他人做过无数次了，这里只不过是用了我们自己的方式再演绎一次，人生如戏，全靠演技。</p>
<p>朝闻道 </p>
<p>http://www.cnblogs.com/findumars</p>
<p>朝闻道，夕可死矣！为了成为IT高手，为了挽回我失去的青春，也为了我亲爱的家人，下决心刻苦学习编程知识，虽九死而不悔！ 金头盔飞行员蒋佳冀：知道了不行，熟悉也不够，要真正进入潜意识，成为条件反射才行。</p>
<p>稀泥蟹 </p>
<p>http://www.seanyxie.com</p>
<p>what will be will be, what is gone is gone…</p>
<p>书籍</p>
<p>《QmlBook》 &#8211; A Book about Qt5：</p>
<p>英文版：http://qmlbook.github.io<br />
中文版：https://github.com/cwc1987/QmlBook-In-Chinese<br />
书名：《C++ Primer plus》<br />
作者：Stephen Prata<br />
介绍：从入门到精通必读经典教程。它被誉为“开发人员学习C++的教程，没有之一”！<br />
这里写图片描述</p>
<p>书名：《C++ Primer》<br />
作者：Stanley B. Lippman、Josee Lajoie、Barbara E. Moo<br />
介绍：久负盛名的经典教程，系统全面地介绍了C++，可以看成是学习C++的百科全书，C++程序猿必备。<br />
这里写图片描述</p>
<p>书名：《C++ GUI Qt 4编程》<br />
作者：Jasmin Blanchette、Mark Summerfield<br />
介绍：Trolltech的Qt培训教材，生动、全面、深刻地阐明了Qt程序的设计理念，轻松创建跨平台的解决方案。<br />
这里写图片描述</p>
<p>书名：《C++ Qt设计模式》<br />
作者： Alan Ezust<br />
介绍：利用跨平台开源软件开发框架Qt阐释了C++和设计模式中的主要思想，既复习了设计模式，又学了C++/Qt，对于使用其它框架也是一个非常有用的参考。<br />
这里写图片描述</p>
<p>书名：《Qt高级编程》<br />
作者：Mark Summerfield<br />
介绍：阐述Qt高级编程技术的书籍。以工程实践为主旨，是对Qt现有的700多个类和上百万字参考文档中部分关键技术深入、全面的讲解和探讨。<br />
这里写图片描述</p>
<p>书名：《Qt5开发实战》<br />
作者：金大zhen、张红艳 译<br />
介绍：在全面阐述Qt基本功能的基础上，对新增的功能和服务进行了重点介绍。同时运用大量示例，集中讲解了应用程序的开发方法、技巧和必需的API。<br />
这里写图片描述</p>
<p>书名：《Qt5开发及实例》<br />
作者：陆文周<br />
介绍：以Qt5.4为平台，循序渐进，在介绍开发环境的基础上，系统介绍Qt5应用程序的开发技术，通过实例介绍和讲解内容，将知识和能力融为一体。一般能够在比较短的时间内掌握Qt5应用技术。<br />
这里写图片描述</p>
<p>书名：《Qt on Android 核心编程》<br />
作者：安晓辉<br />
介绍：基于Qt 5.2，详细讲述如何在移动平台Android上使用Qt框架进行开发。无论是专注于传统的桌面软件开发，还是希望尝试使用Qt在Android平台开发，都可以从中获得重要的知识与实例。<br />
这里写图片描述</p>
<p>书名：《Qt Quick核心编程》<br />
作者：安晓辉<br />
介绍：着力于QML语言基础、事件、Qt Quick基本元素，辅以简要的ECMAScript（JavaScript）语言介绍，能够快速熟悉Qt Quick的基本知识和开发过程，详尽入微。<br />
这里写图片描述</p>
<p>书名：《Qt Creator快速入门 》<br />
作者：霍亚飞<br />
介绍：基于Qt Creator编写，全面涉及 Qt Quick；植根于 Qt 网络博客教程，可无限更新；对每个知识点详尽讲解，并设计了示例程序。<br />
这里写图片描述</p>
<p>书名：《Qt5编程入门》<br />
作者：霍亚飞、devbean<br />
介绍：基于Qt5.3编写，全面涉及 Qt Quick；植根于 Qt 网络博客教程，可无限更新；对每个知识点详尽讲解，并设计了示例程序。<br />
这里写图片描述</p>
<p>书名：《精通Qt4编程》<br />
作者：蔡志明 等编<br />
介绍：详细介绍了Qt的基础知识和GUI编程应用，举例翔实，内容全面，基本涵盖了Qt编程的各个方面。<br />
这里写图片描述</p>
<p>书名：《Linux环境下Qt4图形界面与MySQL编程》<br />
作者：邱铁<br />
介绍：基于Qt4.7，采用“深入分析控件+实例解析”的方式，配合实际工程项目，对Linux操作系统下的Qt与MySQL编程技术进行了全面细致的讲解。<br />
这里写图片描述</p>
<p>书名：《Linux Qt GUI开发详解》<br />
作者：李彬<br />
介绍：介绍了Linux下Qt用户界面开发的重要的核心知识，从基础界面控件使用开始，中间又详细讲解了QtWebKit的开发，语言通俗易懂，通过实例演示强化读者对章节知识点的掌握，以提高读者的实战水平及经验。<br />
这里写图片描述</p>
<p>书名：《零基础学Qt4编程》<br />
作者：吴迪<br />
介绍：针对初学者写的，很详细，如果看了还不会的话，那也是没谁了！<br />
这里写图片描述</p>
<p>更多</p>
<p>以上所有资料，均为个人整理，代表个人观点，无任何排名、优先级之说。。。</p>
<p>持续更新，敬请期待，欢迎补充。。。</p>
]]></content:encoded>
			<wfw:commentRss>https://www.softwareace.cn/?feed=rss2&#038;p=1457</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>QWebview  Ssl 双向认证</title>
		<link>https://www.softwareace.cn/?p=1318</link>
		<comments>https://www.softwareace.cn/?p=1318#comments</comments>
		<pubDate>Sat, 09 May 2015 07:01:55 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[Qt Gui]]></category>

		<guid isPermaLink="false">http://www.softwareace.cn/?p=1318</guid>
		<description><![CDATA[[crayon-6a1b36c83fda2035246336/] &#160;]]></description>
				<content:encoded><![CDATA[<p></p><pre class="crayon-plain-tag">qtssl::qtssl(QWidget *parent)
	: QMainWindow(parent)
{
	ui.setupUi(this);
	connect(ui.webView-&gt;page()-&gt;networkAccessManager(), SIGNAL(sslErrors(QNetworkReply*, const QList&lt;QSslError&gt;&amp;)), this,
		SLOT(on_networkReply_sslErrors(QNetworkReply*, const QList&lt;QSslError&gt;&amp;)));

    if (!QSslSocket::supportsSsl())
		Q_ASSERT(!"no supportsSsl!!");
	
	m_networkRequest.setUrl(QUrl("https://demo.ecaishen.com/"));
	ui.webView-&gt;load(m_networkRequest);

}

void qtssl::on_networkReply_sslErrors(QNetworkReply* reply, const QList&lt;QSslError&gt; &amp;error)
{
	foreach(QSslError e, error)
	{
		//Q_ASSERT(!"SslErrors");
		QMessageLogger(__FILE__, __LINE__, 0).warning() &lt;&lt; e.errorString();
	}
	QSettings settings;
	QList&lt;QSslCertificate&gt; ca_merge = QSslCertificate::fromData(settings.value(QLatin1String("CaCertificates")).toByteArray());

	QList&lt;QSslCertificate&gt; ca_new;
	QStringList errorStrings;
	for (int i = 0; i &lt; error.count(); ++i) {
		if (ca_merge.contains(error.at(i).certificate()))
			continue;
		errorStrings += error.at(i).errorString();
		if (!error.at(i).certificate().isNull()) {
			ca_new.append(error.at(i).certificate());
		}
	}
	if (errorStrings.isEmpty()) {
		reply-&gt;ignoreSslErrors();
		return;
	}

	QString errors = errorStrings.join(QLatin1String("&lt;/li&gt;&lt;li&gt;"));
	if (true) {
		if (ca_new.count() &gt; 0) {
			QStringList certinfos;
			if (true) {
				ca_merge += ca_new;

				QSslConfiguration sslCfg = QSslConfiguration::defaultConfiguration();
				QList&lt;QSslCertificate&gt; ca_list = sslCfg.caCertificates();
				ca_list += ca_new;
				sslCfg.setCaCertificates(ca_list);
				sslCfg.setPeerVerifyMode(QSslSocket::VerifyNone);
				sslCfg.setProtocol(QSsl::TlsV1_1);
				//sslCfg.setProtocol(QSsl::AnyProtocol);
				QSslConfiguration::setDefaultConfiguration(sslCfg);
				reply-&gt;setSslConfiguration(sslCfg);

				QByteArray pems;
				for (int i = 0; i &lt; ca_merge.count(); ++i)
					pems += ca_merge.at(i).toPem() + '\n';
				settings.setValue(QLatin1String("CaCertificates"), pems);
			}
		}
		reply-&gt;ignoreSslErrors();
	}
}</pre><p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>https://www.softwareace.cn/?feed=rss2&#038;p=1318</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>QWebView support SSL and Redirection</title>
		<link>https://www.softwareace.cn/?p=1295</link>
		<comments>https://www.softwareace.cn/?p=1295#comments</comments>
		<pubDate>Wed, 08 Apr 2015 09:22:43 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[net work]]></category>
		<category><![CDATA[Qt Gui]]></category>

		<guid isPermaLink="false">http://www.softwareace.cn/?p=1295</guid>
		<description><![CDATA[[crayon-6a1b36c83ffbf905685050/] &#160; [crayon-6a1b36c [&#8230;]]]></description>
				<content:encoded><![CDATA[<p></p><pre class="crayon-plain-tag">#ifndef D_H
#define D_H

#include &lt;QtWidgets/QMainWindow&gt;
#include &lt;QtNetwork&gt;
#include "ui_d.h"
class d : public QMainWindow
{
	Q_OBJECT

public:
	d(QWidget *parent = 0);
	~d();

private:
	Ui::dClass ui;
	QNetworkRequest m_networkRequest;
private slots:
	void on_networkReply_finished(QNetworkReply* reply);
	void on_networkReply_sslErrors(QNetworkReply* reply, const QList&lt;QSslError&gt; &amp;errors);
};

#endif // D_H</pre><p>&nbsp;</p><pre class="crayon-plain-tag">#include "d.h"

d::d(QWidget *parent)
	: QMainWindow(parent)
{
	ui.setupUi(this);
	if (!QSslSocket::supportsSsl())
		Q_ASSERT(!"no supportsSsl!! please install http://slproweb.com/products/Win32OpenSSL.html");
	QSslConfiguration configSsl = QSslConfiguration::defaultConfiguration();
	configSsl.setProtocol(QSsl::AnyProtocol);
	m_networkRequest.setSslConfiguration(configSsl);
	connect(ui.wbLogin-&gt;page()-&gt;networkAccessManager(), SIGNAL(finished(QNetworkReply*)), this, SLOT(on_networkReply_finished(QNetworkReply*)));
	connect(ui.wbLogin-&gt;page()-&gt;networkAccessManager(), SIGNAL(sslErrors(QNetworkReply*, const QList&lt;QSslError&gt;&amp;)), this, 
		SLOT(on_networkReply_sslErrors(QNetworkReply*, const QList&lt;QSslError&gt;&amp;)));
}

d::~d()
{

}


void d::on_networkReply_finished(QNetworkReply* reply)
{
	if (reply-&gt;error() == QNetworkReply::NoError)
	{
		int statusCode = reply-&gt;attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
		if (statusCode == 301 || statusCode == 302)
		{
			QString strUrl = reply-&gt;attribute(QNetworkRequest::RedirectionTargetAttribute).toString();

			if (!strUrl.isEmpty())
			{
				if (strUrl.contains(SUCCESSED_MARK))
				{
					analysisUrl(strUrl);
				}
				else
				{
					m_networkRequest.setUrl(QUrl(strUrl));
					ui.wbLogin-&gt;load(m_networkRequest);
				}
			}
			if (reply)
			{
				reply-&gt;close();
				reply = NULL;
			}
			return;
		}
		else
		{
			QString imageData = reply-&gt;readAll();

		}
	}
	else
	{
		QString error = reply-&gt;errorString();
		QMessageLogger(__FILE__, __LINE__, 0).warning() &lt;&lt; error;
	}

	if (reply)
	{
		reply-&gt;close();
		reply = NULL;
	}
}

void d::on_networkReply_sslErrors(QNetworkReply* reply, const QList&lt;QSslError&gt; &amp;errors)
{
	foreach(QSslError e, errors)
	{
		Q_ASSERT(!"SslErrors");
		QMessageLogger(__FILE__, __LINE__, 0).warning() &lt;&lt; e.errorString();
	}
	reply-&gt;ignoreSslErrors();
}</pre><p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>https://www.softwareace.cn/?feed=rss2&#038;p=1295</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Qt 动态加载 dll</title>
		<link>https://www.softwareace.cn/?p=1272</link>
		<comments>https://www.softwareace.cn/?p=1272#comments</comments>
		<pubDate>Tue, 24 Mar 2015 01:13:26 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[Qt Gui]]></category>

		<guid isPermaLink="false">http://www.softwareace.cn/?p=1272</guid>
		<description><![CDATA[[crayon-6a1b36c8401e0579095568/] &#160;]]></description>
				<content:encoded><![CDATA[<p></p><pre class="crayon-plain-tag">#ifdef Q_OS_WIN
    typedef long ( *SHELLRUN)(long,const char*, const char*, const char* ,const char* , int );
    SHELLRUN test;
    QString str = "shell32.dll";
    QLibrary lib(str);
    test = (SHELLRUN)lib.resolve("ShellExecuteA");
    const char * te = "open";
    const char * te1 = ".\\help\\Guide.hlp";
    test(NULL,te,te1,NULL,NULL,5);
    lib.unload();
#endif</pre><p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>https://www.softwareace.cn/?feed=rss2&#038;p=1272</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>QT 连接ACCESS数据库（OCDB）</title>
		<link>https://www.softwareace.cn/?p=1212</link>
		<comments>https://www.softwareace.cn/?p=1212#comments</comments>
		<pubDate>Wed, 11 Feb 2015 06:35:08 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[Qt Gui]]></category>

		<guid isPermaLink="false">http://www.softwareace.cn/?p=1212</guid>
		<description><![CDATA[[crayon-6a1b36c8403df728194531/] &#160; [crayon-6a1b36c [&#8230;]]]></description>
				<content:encoded><![CDATA[<p></p><pre class="crayon-plain-tag">/*@版权说明
国防科技大学 信息系统与管理学院仿真工程研究所
平行系统研究中心
版权@所有
*/
/*功能说明
文件名称：AccessDB.h
作    者：杨泽
联系方式：yangze.3344@163.com
创建时间：2014.12.04 17:28
目    的：用于气象数据的数据库操作
功能描述：实现Access数据库的基本操作
约束条件：该编码使用了C++11特性，因此编译平台必须支持C++11标准，使用QT mingw32编译器
*/
#ifndef ACCESSDB_H
#define ACCESSDB_H
#include &lt;QtSql&gt;
class AccessDB{
public:
   AccessDB();
   bool connectDB(const QString&amp; DatabasePath,
                  const QString&amp; connectName,
                  const QString&amp; HostName = "",
                  const QString&amp; UserName = "",
                  const QString&amp; Password = "");
   bool queryDB(const QString &amp;query);
   void newQuery();
   //bool insertData(const QString &amp;insert);
   bool openDB(const QString&amp; connectName);
   //void closeDB(const QString&amp; connectName);
    void closeDB();
   QSqlDatabase connection;
   QSqlQuery *m_query;
   QString idName;
};
 
#endif // ACCESSDB_H</pre><p>&nbsp;</p><pre class="crayon-plain-tag">#include "AccessDB.h"
#include &lt;QMessageBox&gt;
#include "Externs.h"
AccessDB::AccessDB()
{
 
}
 
bool AccessDB::connectDB(const QString&amp; DatabasePath,
                         const QString&amp; connectName,
                         const QString&amp; HostName,
                         const QString&amp; UserName,
                         const QString&amp; Password)
{
    const QString connID(connectName);
    //QString connID = PREFIX +"-"+DatabasePath;
    connection = QSqlDatabase::database(connID,false);
 
    if(connection.isValid())
    {
        if(connection.isOpen())
            return true;
    }
    else
    {
        connection = QSqlDatabase::addDatabase("QODBC",connID);
 
        QString dsn = QString("DRIVER={Microsoft Access Driver (*.mdb)};FIL={Meteorology Access};DBQ=%1;UID=;PWD=%2")
                .arg(DatabasePath).arg(Password);
        connection.setDatabaseName(dsn);
        //connection.setUserName(UserName);
        //connection.setPassword(Password);
        if(!connection.open())
        {
            QMessageBox::critical(0,QObject::tr("Database Error"),connection.lastError().text());
            return false;
        }
        else
        {
            newQuery();
            return true;
        }
    }
 
}
 
void AccessDB::newQuery()
{
    m_query = new QSqlQuery(connection);
}
 
bool AccessDB::queryDB(const QString &amp;query)
{
    if(!m_query-&gt;prepare(query))//如果加载失败，刚断开连接，然后再连接
    {
        connection.close();
        if(!openDB(idName))
        {
            return false;
        }
        qDebug()&lt;&lt;"new.....Connect";
    }
 
    return(m_query-&gt;exec());
}
 
bool AccessDB::openDB(const QString&amp; connectName)
{
    idName = connectName;
    if(!connectDB(dbName,idName,"","",password))
    {
        QMessageBox msgBox;
        msgBox.setText("数据库连接失败");
        msgBox.setIcon(QMessageBox::Warning);
        msgBox.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel);
        msgBox.setDefaultButton(QMessageBox::Ok);
        msgBox.exec();
        return false;
    }
    return true;
}
 
void AccessDB::closeDB()
{
    const QString connID(idName);
    //connection = QSqlDatabase::database(connID,false);
    connection.close();
    connection.removeDatabase(connID);
}</pre><p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>https://www.softwareace.cn/?feed=rss2&#038;p=1212</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Qt动态加载ui文件，并自定义控件</title>
		<link>https://www.softwareace.cn/?p=1135</link>
		<comments>https://www.softwareace.cn/?p=1135#comments</comments>
		<pubDate>Thu, 29 Jan 2015 01:11:48 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[Qt Gui]]></category>

		<guid isPermaLink="false">http://www.softwareace.cn/?p=1135</guid>
		<description><![CDATA[[crayon-6a1b36c84061e186952274/] &#160; [crayon-6a1b36c [&#8230;]]]></description>
				<content:encoded><![CDATA[<p></p><pre class="crayon-plain-tag">#ifndef QTHELLOWORLD_H
#define QTHELLOWORLD_H
 
#include &lt;QtUiTools/QtUiTools&gt; //需要在项目链接中加 QtUiTools.lib
#include &lt;QFile&gt;
#include &lt;QpushButton&gt;
#include &lt;qtextedit&gt;
 
class QtHelloWorld:public QWidget
{
    Q_OBJECT  //这个相当重要，只有加入了Q_OBJECT，你才能使用QT中的signal和slot机制。
 
public:
     QtHelloWorld(QWidget *parent=0,Qt::WindowFlags name=0);
     int showDialog();
private slots:
     void btnTest_clicked();
};
 
#endif</pre><p>&nbsp;</p><pre class="crayon-plain-tag">#include "QtHelloWorld.h"
 
QWidget *wHelloWorld;
QtHelloWorld::QtHelloWorld(QWidget *parent,Qt::WindowFlags name)
:QWidget(parent,name)
{
     
}
int QtHelloWorld::showDialog()
{
    QUiLoader  uiLoader;
    QFile file("QtHelloWorld.ui");
    QWidget *widget=uiLoader.load(&amp;file);
    if (widget)
    {
        QPushButton *btnTest=widget-&gt;findChild&lt;QPushButton *&gt;("btnTest");
        if (btnTest)
        {
            QObject::connect(btnTest,SIGNAL(clicked()),this,SLOT(btnTest_clicked()));
        }
        widget-&gt;show();
        wHelloWorld=widget;
        return 0;
    }
    return 1;
}
void QtHelloWorld::btnTest_clicked()
{
    QTextEdit *edit=wHelloWorld-&gt;findChild&lt;QTextEdit *&gt;("txtInput");
    QLabel *lbl=wHelloWorld-&gt;findChild&lt;QLabel *&gt;("lblShow");
    if (edit)
    {
        QString s=edit-&gt;toPlainText();
        if (lbl)
            lbl-&gt;setText(s);
    }
}</pre><p>&nbsp;</p><pre class="crayon-plain-tag">#include &lt;QtGui/QApplication&gt;
#include "QtHelloWorld.h"
 
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QtHelloWorld helloWorld;
    helloWorld.showDialog();
 
    return a.exec();
}</pre><p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>https://www.softwareace.cn/?feed=rss2&#038;p=1135</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Qt Windows Extras Overview</title>
		<link>https://www.softwareace.cn/?p=872</link>
		<comments>https://www.softwareace.cn/?p=872#comments</comments>
		<pubDate>Mon, 28 Jul 2014 06:40:25 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[Qt Gui]]></category>

		<guid isPermaLink="false">http://www.softwareace.cn/?p=872</guid>
		<description><![CDATA[http://qt-project.org/doc/qt-5/qtwinextras-overview.htm [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>http://qt-project.org/doc/qt-5/qtwinextras-overview.html</p>
]]></content:encoded>
			<wfw:commentRss>https://www.softwareace.cn/?feed=rss2&#038;p=872</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
