前言:
GPL和LGPL
转载:http://www.cnblogs.com/findumars/p/3556883.html
转载:http://blog.sina.com.cn/s/blog_458983150100ndbg.html
GPL:
我们很熟悉的Linux就是采用了GPL。GPL协议和BSD, Apache Licence等鼓励代码重用的许可很不一样。GPL的出发点是代码的开源/免费使用和引用/修改/衍生代码的开源/免费使用,但不允许修改后和衍生的代 码做为闭源的商业软件发布和销售。这也就是为什么我们能用免费的各种linux,包括商业公司的linux和linux上各种各样的由个人,组织,以及商 业软件公司开发的免费软件了。
GPL协议的主要内容是只要在一个软件中使用(”使用”指类库引用,修改后的代码或者衍生代码)GPL 协议的产品,则该软件产品必须也采用GPL协议,既必须也是开源和免费。这就是所谓的”传染性”。GPL协议的产品作为一个单独的产品使用没有任何问题, 还可以享受免费的优势。
由于GPL严格要求使用了GPL类库的软件产品必须使用GPL协议,对于使用GPL协议的开源代码,商业软件或者对代码有保密要求的部门就不适合集成/采用作为类库和二次开发的基础。
其它细节如再发布的时候需要伴随GPL协议等和BSD/Apache等类似。
LGPL:
LGPL 是GPL的一个为主要为类库使用设计的开源协议。和GPL要求任何使用/修改/衍生之GPL类库的的软件必须采用GPL协议不同。LGPL 允许商业软件通过类库引用(link)方式使用LGPL类库而不需要开源商业软件的代码。这使得采用LGPL协议的开源代码可以被商业软件作为类库引用并 发布和销售。
但是如果修改LGPL协议的代码或者衍生,则所有修改的代码,涉及修改部分的额外代码和衍生的代码都必须采用LGPL协议。因 此LGPL协议的开源 代码很适合作为第三方类库被商业软件引用,但不适合希望以LGPL协议代码为基础,通过修改和衍生的方式做二次开发的商业软件采用。
GPL/LGPL都保障原作者的知识产权,避免有人利用开源代码复制并开发类似的产品。
个人理解:采用LGPL的代码,一般情况下它本身就是一个第三方库(别忘了LGPL最早的名字就是Library GPL),这时候开发人员仅仅用到了它的功能,而没有对库本身进行任何修改,那么开发人员也不必公布自己的商业源代码。但是如果你修改了这个库的代码,那么对不起,你修改的代码必须全部开源,并且协议也是LGPL,但除了库源码之外的商业代码,仍不必公布。
VS2012下配置QT环境:
Visual Studio Add-in 1.2.2 for Qt5
学习博客:
转载:http://blog.csdn.net/liang19890820
一.零碎知识点
通用框架
1 //QApplication应用程序类 2 //QT头文件没有.h 3 //头文件和类名一样 4 #include<QApplication> 5 6 int main(int argc, char* argv[]) 7 { 8 //有且只有一个应用程序类的对象 9 QApplication a(argc, argv); 10 11 //MyWidget继承与QWidget,QWidget是一个窗口基类 12 MyWidget w; 13 14 //窗口创建默认是隐藏,需要人为显示 15 w.show(); 16 17 //让程序一直执行,等待用户操作 18 //等待事件的发送 19 a.exec(); 20 return 0; 21 }
1. 无边框(标题栏)的窗口
setWindowOpacity(1)这一句代码实现窗口的透明效果,函数里面的参数是透明度,1表示不透明
setWindowFlags(Qt::FramelessWindowHint);隐藏窗口的标题栏和边框
Qt::Tool表示不在任务栏中显示
Qt::WindowStaysOnTopHint 窗口置顶显示
2.QWidget窗口设置背景图
TestQt w;
w.setAutoFillBackground(true);
w.setStyleSheet("QWidget{border-image:url(windowBkg.png)}" );
3.QPushButton
//点击窗口上按钮,窗口最小化
connect(ui.minButton,SIGNAL(clicked()),this, SLOT(showMinimized()));
//控件贴图
方式一:
QPixmap minPixmap = this->style()->standardPixmap(QStyle::SP_TitleBarMinButton);
ui.minButton->setIcon(minPixmap);
方式二:
ui.minButton->setStyleSheet("QPushButton{border-image: url(min.png);}"
"QPushButton:hover{border-image: url(min_hover.png);}"
"QPushButton:pressed{border-image: url(min_pressed.png);}");
ui.registerButton->setFlat(true);去掉按钮边框
设置前效果:
设置后效果:
4.QLineEdit 密码模式
ui.passwordlineEdit->setEchoMode(QLineEdit::Password);//编辑框密码格式
5.解决在代码中给控件添加ToolTip提示信息乱码
QTextCodec *codec = QTextCodec::codecForLocale();//解决中文乱码
QString minbtninfo = codec->toUnicode("最小化");
ui.minButton->setToolTip(minbtninfo);
6.设置编辑框的占位字符
转载:http://www.tuicool.com/articles/NRZFFnB
ui.UserEditt->setPlaceholderText(QStringLiteral("用户")); # 设定行编辑框的占位字符 ui.UserEdit->setFixedSize(155, 25);
使用Qt Style Sheet设置控件风格
QLineEdit密码模式下,默认密文显示字符是黑色圆点,如果你想更改,可以这样设置
ui.passwordEdit->setStyleSheet("QLineEdit{ lineedit-password-character: 42}");//‘*’对应的ASCII码值为42
运行效果:
7.Qt之自定义搜索框
转载:http://blog.sina.com.cn/s/blog_a6fb6cc90101dmox.html
8.QT中数学函数头文件
#include <QtCore/qmath.h>
9.对窗体进行圆角及半透明背景设置
void ****::paintEvent(QPaintEvent *) { QPainter painter(this); QPainterPath path; path.addRoundRect(this->rect(), 5); //圆角设置 //半透明背景 painter.fillPath(path, QColor(92, 155, 203, 100)); }
效果:
10. QT多语言切换
转载:http://blog.csdn.net/n567656756765676567/article/details/7093945
转载:http://www.shangxueba.com/jingyan/1855677.html
11.Qt 设置窗口居中显示
方法一:
在窗口(QWidget类及派生类)的构造函数中添加如下代码:
#include <QDesktopWidget>
//.......
QDesktopWidget* desktop = QApplication::desktop(); // =qApp->desktop();也可以
move((desktop->width() - this->width())/2, (desktop->height() - this->height())/2);
//.......
方法二:
在调用show()函数后调用move()函数,j将窗口移动到屏幕中央。
#include <QDesktopWidget>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
w.move ((QApplication::desktop()->width() - w.width())/2,(QApplication::desktop()->height() - w.height())/2);
return a.exec();
}