Qt编程图标设置(备忘)

这里所说的Qt图标设置包含两个方面,一个是给程序的窗口设置图标,另一个是给exe文件设置图标。

给窗口设置图标

这个比较简单,只要在主窗口实例的类的构造函数中加上下面这段代码就好了:

setWindowIcon(QIcon(":/path.ico"));

期中的 path.ico是图标的路径,图标可以是各种格式的图片。

给exe程序设置图标

这个稍微繁琐一些。在项目的目录下创建一个rc文件,文件名可以随便取,但是扩展名必须为rc。这里假设是myapp.rc

IDI_ICON1 ICON DISCARDABLE "myIcon.ico"

其中,myIcon.ico是图标的文件名,这个文件貌似必须是ico文件才行!
然后再pro文件中加入:

RC_FILE = myapp.rc

这样经过编译之后,生成的exe文件就会有图标啦!

寒假开始了

今天我起得好早,临走之前我登陆一下我的博客,发表这篇日志。
寒假里,我可能没办法更新博客,没办法编写程序。我会尽快回来哒!

写给打算搭建独立博客的朋友

首先我要声明的是,这篇文章是写给打算搭建独立博客的朋友。而不是教Wordpress新手如何做好SEO。

我的博客大概是2011年上半年搭建的,一转眼也快两年了。这里我想写一篇文章给那些现在还没有独立博客,但是又打算搭建独立博客的朋友。

搭建博客的动机是什么

在搭建独立博客之前记得问问自己,为什么要搭建这个博客。像我,搭建这个博客就是为了写一些学习笔记,偶尔记录一些不想对朋友吐槽的心事。倘若你只想当一当站长,或者搭建一个博客赶时髦。我建议你还是放弃算了,因为这会浪费你很多时间。当你把博客建好之后,你的兴奋感也会在很短的时间内消失。

能赚多少广告费

惭愧地说,我的博客尚未赚过钱。两年了,一天只有200多IP。我以前也在博客上挂过Google的广告,结果几个月下来还不到1美元,于是我把广告撤下了。不光是我,国内很多有一定点击率的博客广告费依然很低。如果你想通过博客来赚钱,我还是建议你改做其他的兼职吧,至少做兼职的钱来得快。

搭建博客的成本

搭建一个独立博客的成本其实蛮低的,注册一个com域名大概40多块。域名注册最好到国内注册,选美国的Godaddy注册会比较好。理由我就不说了,自己上网搜索去。别注册info域名,这类域名由于第一年很便宜,很多垃圾站都选择info域名。抛开域名,还有一个要考虑的就是空间。我选的是国外的虚拟空间,100多一年的样子。除了虚拟空间之外,你还可以选VPS。选VPS需要一定的计算机基础,如果你电脑技术不怎么样,那还是乖乖地选虚拟空间吧!

另外,如果你只是想搭建一个博客,不管你是否会用VPS,我都不推荐你用VPS。因为虚拟空间不需要折腾,可以专心写博客。

关于SEO

SEO就是搜索引擎优化啦。你针对搜索引擎对你的博客进行一些优化,可以有效地提高你的博客在搜索结果的排名。可我经常做一些违背SEO原则的事情,比如,经常换博客主题、换网站标题。因为我写博客是为了取悦自己,不是为了取悦Google或者Baidu。

适当的SEO还是很有必要的,但别过度做SEO。

QMainWindow与QWidget和QDialog设置布局的不同之处

我以前给QWidget或者QDialog设置布局的时候方式很简单。创建好一个布局:mainLayout,然后不停地把各个控件往mainLayout里面放,最后调用setLayout(mainLayout)就行了。

错误提示:…Which already has a layout

可是今天在QMainWindow中使用这个方法的时候却不管用。
当时我也创建了一个mainLayout,再创建了一个QTreeWidget, 我吧QTreeWidget设置为centralWidget,然后把其他的控件有规律地放入mainLayout中,再调用setLayout(mainLayout),结果出错了。
编译的时候提示

QWidget::setLayout: Attempting to set QLayout "" on MainWindow "", which already has a layout

这句话的意思是说,你已经给MainWindow设置过一个布局了,再设置一个会出错。

该如何给QMainWindow正确地设置布局呢

要想QMainWidget创建布局,合理的步骤应该是这样的:

第一步创建一个QWidget实例,并将这个实例设置为centralWidget:

QWidget *widget = new QWidget();
this->setCentralWidget(widget);

然后创建一个主布局mainLayout,并把所需要的所有控件都往里面放(工具栏、菜单栏、状态栏除外):

QHBoxLayout *mainLayout = new QHBoxLayout;
mainLayout->addWidget(...);
mainLayout->addLayout(...);
...

最一步就是将widget的布局设置为mainLayout:

centralWidget()->setLayout(mainLayout);
//centralWidget()返回的是第一步创建的那个QWidget实例

UNIX环境高级编程第二版英文版PDF文档下载

最近在看《UNIX环境高级编程》第二版,我觉得翻译的还可以吧,有些小地方不是很懂,可以翻一翻英文版的APUE,在网上找了一阵子,发现这两个链接,
Advance programming in the UNIX programming。

新浪爱问下载

国外网站下载

如果哪一天你发现这两个链接失效了,记得提醒我。
谢谢啦!

Keywords和Description真的有那么重要吗?

随便翻看一些老一点的SEO文章,几乎都有提到meta标签中的keyword和description。
并且告诉你每个页面都要设置好keyword和description。

并且还会强调这几点:

  1. 注意关键词的密度,不要堆砌关键词。
  2. 注意长度。字数不可超过xxx。
  3. 最后一点就是,不同的页面要设置不同的关键词和文章描述。

一开始YUCOAT对这观点深信不疑,并开始在自己的博客中安装一些插件,给首页设置了适合全站的关键词和描述文字。给每个日志页面的关键词都设置为keyword,并将页面的第一段话设置为description。

我以为会很给力,因为我觉得,从搜索引擎的角度来讲,这样真的很有利于“它们”了解文章内容,从而进行正确的匹配。

后来一次我用Google和百度搜索我的博客,发现它们的搜索结果中并没有使用description的描述作为搜索结果的描述。显示的却是博客底部的版权信息。

我带着问题去找答案,我发现好多排名靠前的博客和站点都放弃了使用关键词和描述。

我删掉了博客中的seo插件,只在首页设置了一个description。

几个小时后我再使用Google的时候,YUCOAT发现Google终于将我的描述设置为搜索结果的描述啦!一开始我老抱怨Wordpress不够人性化,没有提供description和keyword的优化,想在想想觉得Wordpress是还是对的。

我还做了其他的一些优化,修改robots.txt文件,屏蔽不少页面,比如tag页面,categories页面等等。可以参见这里

说来惭愧,YUCOAT没什么恒心,博客更新慢,有时候是几个星期更新一次,开博一年多了,每天还只有200左右的IP。

这里我提供一些相关的链接吧:

百度和Google网站SEO优化指南

 

Qt安装数据库驱动连接MySQL

我用的是Linux/Ubuntu系统。使用的是apt-get安装的Qt库以及Qt creator。
由于课程设计的需要,我选择了使用Qt + Mysql这一组合来完成我的作业。

默认的情况下Qt是不含有MySQL驱动的,不过包含SQLite3的驱动“QSQLITE”。
安装MySQL的Qt驱动很简单。

sudo apt-get install libqt4-sql-mysql

建议重启一下Qt Creator,然后就可以使用了。
在编译的时候会提示

undefined reference to `QSqlDatabase::addDatabase(QString const&, QString const&)'
undefined reference to `QSqlDatabase::setHostName(QString const&)'

undefined reference to `QSqlDatabase::setDatabaseName(QString const&)'
undefined reference to `QSqlDatabase::setPassword(QString const&)'

undefined reference to `QSqlDatabase::setUserName(QString const&)'
undefined reference to `QSqlDatabase::open()'

undefined reference to `QSqlDatabase::QSqlDatabase()'
undefined reference to `QSqlQuery::QSqlQuery(QString const&, QSqlDatabase)'

undefined reference to `QSqlDatabase::~QSqlDatabase()'
undefined reference to `QSqlQuery::exec(QString const&)'

undefined reference to `QSqlQuery::exec(QString const&)'
...

原因是没有连接Qt的SQL库。只要在pro文件中加入以下内容即可。

QT += sql

关于Qt中的MySQL编程,请参考《Qt MySQL编程教程之hello world篇》

Windows 7系统C语言编程软件推荐

看这个标题就知道,我这篇日志是写给C语言新手的。跟C语言和Linux无关!尽管我一直在Linux平台用vim + gcc完成C语言的编写,但是在这里,我不打算把这些工具推荐给新手。

关于“编程软件”这个词语的纠正

首先,“编程软件”这个称呼不是很恰当,通常我们称之为“集成开发环境(IDE)”。之所以在前面加上“集成”二字是因为集成开发环境通常集成了三个非常基本的功能,分别为“代码编辑”,“编译”和“调试”。

教科书上的VC6.0

我记得我大一那会儿老师和同学用的都是VC6.0.但是很不幸,VC6.0不兼容Windows 7。所以催生了寻找其他的集成开发环境的想法。

轻量又实用的C-Free

我用过的第二个集成开发环境是C-Free。
进入官网
它非常轻巧,只有几十M,但是对于新手来说它的功能已经够用了。
别看它小,它在语法高亮和代码提示方面一点也不逊色与VC6.0。如果你没有自己的电脑,那么,在U盘里面装一个C-Free是很明智的。
C-FREE是收费软件,你每次运行的时候都选“试用”就行了。

不过,我用C-Free的时间不是很长。

功能强大而又免费的code::blocks

Code::Blocks是一款功能比C-Free要强大多了,这里就不讨论它强大在哪里了。因为它超出了我们讨论的范围。
它的代码除了能高实现语法高亮之外,也能实现代码“自动补全”,所谓自动补全就是,当你输入“pri”的时候,下面会提示“printf”。忘了说了,上面所提到的C-Free也是有这个功能的。VC6.0是没有的。

Code::Blocks是用wxWidget编写的,能够在Windows、Linux和Mac三大主流操作系统上运行,像我初用Linux的时候就用Code::Blocks编写代码的。

注意:
Code::Blocks是英文界面的,网上可能有汉化版的,但是建议你别用,因为可能含有病毒。Code::Blocks的门槛有一点高,我不推荐你用,也不推荐你不用。
CodeBlocks

微软的VS系列

VS的全称是Visual Studio
Windows开发人员应该比较熟悉这个吧,体型庞大,动不动几个G。
我没什么好说的,因为我没怎么用过,它的售价也蛮高的,我又懒得找破解版(准确地说我是对破解版不信任)。

Visual C++ Express

Visual C++ Express是微软VS系列里面的一款软件,用来开发C++的,不过你拿来写C语言也是可以的。它是免费的,不用去破解。
Visual Studio 2008 Express下载
这个VS里面包含一Visual C++。

这里是2008的,不是2010或者2012的,不要介意,用起来还不错,没必要什么软件都追求最新的。

其他小众版的开发环境

这些不知道算不算小众,反正在我的圈子里没什么人用。
eclipse C++:www.eclipse.org/cdt
CodeLite:www.codelite.org

后话

以上所提到的“集成开发环境”我都很少用,大部分时间我都是在Linux下用Vim + Gcc编写C语言。
如果你学C语言只是为了应付考试或者过个级,我还是推荐你按照教科书上,用VC6.0。
但是如果你要是想深入C语言的话,我还是建议你来Linux平台。

学C语言的初期别在“开发工具”上花太多时间,切记!切记!

Ubuntu安装深度音乐与深度影音播放器

深度音乐和深度影音是Linux Deepin团队根据国人使用习惯开发的两款播放器。它能运行于大多数Linux发行版上。和其他的播放器比起来,深度的播放器不仅更加符合国人的习惯,而且还有着更加漂亮和简约的UI。

安装python-gtk2和python-xlib

安装python-xlib很简单:

sudo apt-get install python-xlib

接下来安装python-gtk2, 我所使用的python-gtk2是系统自带的,这里推荐你安装Deepin提供的python-gtk2,因为他们解决了内存泄漏的问题。
32位|64位
安装

sudo dpkg -i python-gtk2*

安装 Deepin UI 库

下载Deepin UI库
32位|64位
以同样的方式安装。

sudo dpkg -i deepin-ui*

无论是安装深度音乐还是安装深度影音,以上两个包都需要安装的。

安装深度音乐

下载Deepin-music-player包:
64位与32位
安装:

sudo dpkg -i deepin-music-player*

如果有“依赖不足”之类的错误提示,别着急,往下看!

安装深度影音

下载Deepin-media-player包
64位与32位
安装:

sudo dpkg -i deepin-media-player*

修复依赖问题

安装Deepin-media-player或者Deepin-music-player的过程中可能会出现依赖不足的错误提示。
修复方法为:

sudo apt-get install -f

安装教程结束了,如果您在安装的过程中遇到了问题,请在下面留言!

编译出错,错误: void 值未如预期地被忽略

造成错误的原因是返回类型为void的函数将返回值赋给某个变量。比如:

...
void func() {
        printf("hello, world");
}

int main() {
        int retval;
        retval = func();  
        //改为func();即可!
        return 0;
}

解决办法很简单,这里就不啰嗦了!

无觅相关文章插件,快速提升流量