自学QT笔记
前言:
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
一.零碎知识点
通用框架
//QApplication应用程序类
//QT头文件没有.h
//头文件和类名一样
#include<QApplication> int main(int argc, char* argv[])
{
//有且只有一个应用程序类的对象
QApplication a(argc, argv); //MyWidget继承与QWidget,QWidget是一个窗口基类
MyWidget w; //窗口创建默认是隐藏,需要人为显示
w.show(); //让程序一直执行,等待用户操作
//等待事件的发送
a.exec();
return ;
}
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(, );
使用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(), ); //圆角设置
//半透明背景
painter.fillPath(path, QColor(, , , ));
}
效果:
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();
}
自学QT笔记的更多相关文章
- QT笔记之VS2010 Qt中导入qrc资源文件
转载1:http://qimo601.iteye.com/blog/1404693 转载2:http://blog.sina.com.cn/s/blog_92cde3060101lobm.html 转 ...
- 自学PHP笔记(五) PHP运算符
本文转发来自:自学PHP笔记(五) PHP运算符 首先我们需要了解运算符是什么,运算符是指的对变量.常量或者数据进行计算的一个符号,比如数学中学到的加减乘除等用来运算的代表符号,PHP中的运算符也是这 ...
- vue 自学项目笔记
感觉小青推荐的学习网课, 利用vue 仿制一个去哪网, 学习的东西很多, 在食用之前,需要先确保js 和css 过关 js https://www.bilibili.com/video/av3009 ...
- QT笔记之解决QT5.2.0和VS2012中文乱码 以及在Qt Creator中文报错
转载:http://bbs.csdn.net/topics/390750169 VS2012 中文乱码 1.方法一: 包含头文件 #include <QTextCodec> ....... ...
- QT笔记之VS开发程序遇到的问题
转载:http://www.cnblogs.com/li-peng/p/3644812.html 转载:http://www.cnblogs.com/csuftzzk/p/VS_Qt_Experien ...
- QT笔记之不规则窗口的实现
QT实现的不规则窗口,是根据图片的形状显示 1.去标题栏 2.设置窗口背景为透明色 3.最后给窗口设置背景色 注:背景图为镂空的 格式为.png 图片资源下载:http://pan.baidu.com ...
- QT笔记之模态对话框及非模态对话框
模态对话框(Modal Dialog)与非模态对话框(Modeless Dialog)的概念不是Qt所独有的,在各种不同的平台下都存在.又有叫法是称为模式对话框,无模式对话框等.所谓模态对话框就是在其 ...
- QT笔记之QLineEdit自动补全以及控件提升
转载:http://www.cnblogs.com/csuftzzk/p/qss_lineedit_completer.html?utm_source=tuicool&utm_medium=r ...
- QT笔记之实现阴影窗口
方法一: 代码实现 在窗口构造函数中加入:setAttribute(Qt::WA_TranslucentBackground),保证不被绘制上的部分透明 重写void paintEvent(QPain ...
随机推荐
- CCF真题之节日
201503-3 问题描述 有一类节日的日期并不是固定的,而是以“a月的第b个星期c”的形式定下来的,比如说母亲节就定为每年的五月的第二个星期日. 现在,给你a,b,c和y1, y2(1850 ≤ y ...
- struts文件上传(多文件)
第01步:配置web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app version= ...
- Android bindservice使用
package com.example.myact10; import com.example.myact10.MyService.MyBinder; import android.support.v ...
- 5. 星际争霸之php设计模式--抽象工厂模式
题记==============================================================================本php设计模式专辑来源于博客(jymo ...
- 《zw版·Halcon-delphi系列原创教程》航母舰载机·视觉定位标志的识别代码
<zw版·Halcon-delphi系列原创教程>航母舰载机·视觉定位标志的识别代码 航母舰载机机身上的黄黑圆圈的标志是什么意思,辐射?核动力?战术核弹? <百度百科>介绍如下 ...
- HTTP请求流程(一)----流程简介
最近一直在研究如何让asp.net实现上传大文件的功能,所以都没怎么写技术类的文章了.可惜的是至今还没研究出来,惭愧~~~.不过因为这样,也了解了一下http消息请求的大致过程.我就先简单介绍下,然后 ...
- android 学习随笔十一(网络:HttpClient框架)
1.使用HttpClient框架发送get.post请求 google收集apache提供的一个发送Http请求框架 public class Tools { public static String ...
- centos7.1-64bit安装qtcreator
首先,启用 EPEL Repository: yum -y install epel-release 启用 EPEL Repository 後, 可以用 yum 直接安裝qtcreator: yum ...
- 使用PHP flush 函数的时候我们需要注意些什么呢?
WebServer(可以认为特指apache)的缓冲区.在apache module的sapi下, flush会通过调用sapi_module的flush成员函数指针,间接的调用apache的api: ...
- 【css】多行文字图片混排容器内垂直居中解决方案
css: .box-wrap{display:table;width:200px;height:200px;*position:relative;}/*最外边的容器,需固定宽高*/ .box-ha ...