自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(67)
  • 资源 (6)
  • 收藏
  • 关注

原创 C++/Qt面试题

C++/Qt面试题

2022-07-11 16:37:01 2457 1

原创 WPF 之 自定义窗体的封装

文章目录简介效果代码实现1. 重写`Button`按钮类2. 自定义`CustomWindowBase.xaml` 样式3. `MainWindow` 窗体的引用源码下载简介在绘制界面时,往往需要自定义窗体的封装,下面是实现自定义窗体的方式。效果窗体 ResizeMode="CanResize"窗体 ResizeMode="NoResize"代

2018-10-24 15:59:28 3180 2

原创 WPF实战指南

WPF实战指南文档概述本文档用于记录我在WPF项目开发中遇到的一些问题,进行的一些实战演练。WPF帮助文档内含上百部WPF视频教程,及《WPF编程2012》PDF版;资源链接:https://download.csdn.net/download/me_badman/10741346实战目录WPF 之 自定义窗体的封装;共同进步本人是一名WPF新人,代码中会有很多不足的地方,...

2018-10-24 15:16:53 1680

原创 Qt软件开发文档20----Qt语言翻译家

近日SVN改git,公司大佬手把手教修改代码中语言翻译,为了省事,直接截图了。首先,从CmakeList开始 CmakeLists.txt添加完成后,编译程序,会在原文件路径下出现name_zh.ts。程序中,原来文件是这样的 将其改为 QObject::tr(“….”)的形式, 其中,”“中的内容为要翻译的英文.QObject::tr("add_bubble")QObject::tr

2017-12-21 15:46:21 1626

原创 Qt软件开发文档19---无边框窗体的自定义移动

绘制一个Qt界面时候,往往需要使用无边框窗体,同时需要自定义窗体的移动,拖拽等事件。setWindowFlags(Qt::FramelessWindowHint);利用 mouseEvent写入void MainWindow::mousePressEvent(QMouseEvent * event){ if (event->button() == Qt::LeftButton) {

2017-10-20 09:28:14 281

原创 Qt软件开发文档18---QSettings类的封装与调用,文件路径判断

简述软件开发时候,往往需要利用QSettings写入ini配置文件 多次调用QSettings的读写加大代码量,同时,修改时也会加大难度。 为此封装一个ConFRouter类,利用QSettings统一管理配置文件里的内容。类的声明与定义1. ConFRouter.hclass DLL_API ConFRouter{public: static ConFRouter* create_

2017-09-08 17:16:43 1247 1

原创 Qt软件开发文档17---自定义messagebox窗口

1.CustomMsgBox.h#ifndef CUSTOMMSGBOX_H#define CUSTOMMSGBOX_H#include <QDialog>#include <QMessageBox>#include <QDialogButtonBox>#include <QVBoxLayout>#include <QPushButton>#include <QLabel>#inclu

2017-08-23 11:01:19 759

原创 Qt软件开发文档16---软件更新:写入程序版本信息并读取程序的版本号

实现软件更新,需要写入本地软件的版本号,并读取出来,与服务器版本号相比较,决定是否进行软件的更新。1.写入版本信息:写入一个rc文件,并将其导入到Qt工程中。 在Qt工程中,利用RC_FILE+=version.rc 导入工程 QT+VS编译时,利用cmake导入工程即可. 代码如下:IDI_ICON1 ICON DISCARDABLE "LYL/ic

2017-08-10 16:42:58 1629

原创 QString与char *的相互转换

QString textStr(”ssss”); QString 转换为char *QByteArray ba = textStr.toLocal8Bit();char *textCh = ba.data();这里直接写char *textCh = textStr.toLocal8Bit().data();不行。char *转换为QString QString text2Str = QStri

2017-06-01 15:58:11 330

原创 Qt软件开发文档14---聊天窗口的实现,对QlistWidget点击item项隐藏虚线框的实现

要实现如下对话窗口: 先声明一个封装类FeedBackListItem feedbacklistitem.h#ifndef FeedBackListItem_H#define FeedBackListItem_H#define COLOR_WHITE Qt::white#define ITEM_HEIGHT 40#define I

2017-06-01 15:51:29 4239 1

原创 VS 2013调试加载缓慢

vs2013 调试加载缓慢 是由于调试启动时会加载符号所致。 解决方法: TOOLS - options 把对号去掉即可。

2017-05-31 09:41:01 1032

原创 Qt软件开发文档13---线程互斥

以下内容来源与class Key:{public: Key(){key = 0;} int createKey(){++key;return key;} int value() const{return key;}private: int key;}如果key值等于0,线程一和线程二同时将0载入寄存器,执行+1操作写入主存,则结果是两个线程的执行结果将互相覆

2017-05-02 10:55:13 376

原创 Qt软件开发文档12---scrollBar样式

绘制tableView时 往往需要自定义scrollBar的样式 QTableView *table = new QTableView(this); table->setGeometry(20,20,600,500); QString scrollStyle( //整体布局 "QScrollBar:vertical {

2017-04-26 14:46:06 678

原创 Qt软件开发文档11---更新数据

1.绘制界面绘制如下界面 接收到数据后 同9 将重复的地方封装成一个类class ToothPosLabelMsgWgt :public HiBaseWgt{public: ToothPosLabelMsgWgt(TriTreeViewer*f,QString labelText, QString labelTip, QString labelContent, QWidge

2017-04-24 10:37:40 530

原创 Qt软件开发文档10---数据传递

http://blog.csdn.net/me_badman/article/details/70570191 在上例中绘制出界面元素 这时候需要将数据传递出去 写一个getSetting()方法 获取对应的数据,将数据存入QStringList中QStringList HiAnimationSettingWgt::getSettings(){ QStringList strRet

2017-04-24 10:24:54 412

原创 Qt软件开发文档9---封装类调用

绘制界面时往往需要大量重复的地方,如下 我们将重复的地方封装成一个类 HiAnimationSettingWgt.h// get string from lineeditclass HiLableLineEdtWgt :public HiBaseWgt{public: HiLableLineEdtWgt(TriTreeViewer*f, QString title, QStri

2017-04-24 10:18:34 591

原创 Qt软件开发文档8---登陆界面的绘制及其封装

1.登陆界面的绘制绘制一个登陆界面很简单,直接上代码 signin.h#ifndef SIGNIN_H#define SIGNIN_H#include <QDialog>#include <QMouseEvent>#include <QPixmap>#include <QVBoxLayout>#include <QStyle>#include <QPainter>#include <

2017-04-13 13:01:24 1561 1

原创 Qt软件开发文档7---全局变量(方法)的声明

我们在定义Func的时候 一种需要动态导入 调用Dll 中的Func 来调用函数 另一种则是引入.h头文件,使用类名::方法名/变量名 来调用函数使用全局变量有两种方式 1.extern 关键字(封装Dll时有用到) 2.static 声明静态变量(推荐)开发文档时,往往需要一些多次调用的Func,将这些Func封装在一个.h文件中 调用时直接引入.h文件即可上代码 PuclicF

2017-04-07 10:55:45 716

原创 Qt软件开发文档6---dockWidget自定义标题栏

Qt 自带的 QDockWidget 的标题栏只有两个按钮, 浮动按钮和 关闭按钮。 往往满足不了需求,只适合需要我们自定义一个标题栏。 如下 标题栏实现了自定义的最小化,最大化,关闭按钮 ,接收到dock传来的标题信息 直接上代码: 1.声明一个MyDockTitleBar类 MyDockTitleBar.h#ifndef MYDOCKTITLEBAR_H#de

2017-04-06 11:16:26 6452 1

原创 位运算符 &= |= ^=

a |= b -----> a = a | b , a 或者 b 只要有一个为 1, 那么,a 的最终结果就为 1 a &= b -----> a = a & b , a 和 b 二者必须都为 1, 那么,a 的最终结果才为 1 a ^= b -----> a = a ^ b , 当且仅当 a 和 b 的值不一致时,a 的最终结果才为1,否则为035 的二进制为:0

2017-04-05 13:51:58 306

原创 Qt软件开发文档5---父指针传递的妙用

上节提到过,main窗口调用各widget封装好的dll时,将parent传递给了个widget 在treeView 封装dll时 写入的showTree方法接受到parentbool showTree(void *parent, void *tree, void *){ QWidget *par = (QWidget *)parent; valTrans *vt = (va

2017-04-05 09:10:52 1028

原创 Qt软件开发文档4---主窗口的实现

主窗口如下顶部栏 为menuBar()添加:menuBar()->setFixedHeight(28);//menuBar() mainWindow 方法 QMenu *fileMenu = menuBar()->addMenu(QString::fromLocal8Bit("文件")); QMenu *viewMenu = menuBar()->addMenu(QString::f

2017-04-05 08:59:01 483

原创 Qt软件开发文档3---mainAPP调用dllManager中函数

1.mainWindow.h声明//这个声明主要用于调用dllManager的 runFunc函数typedef bool *(*func)(QString,QString,void *,void *,void *);//这个结构体用于接收函数的值struct ValTrans{ void *ptr;};2.调用dllmanager runFunc dllName = "treeDl

2017-04-01 17:39:29 602

原创 Qt软件开发文档2---QT构建dll库,并使用dllmanager管理dll库

1.QT创建新项目 以treeViewDll为例 文件中含有treeviewdll_global.h 在treeview.cpp 中正常写入需要的内容 treeViewDll中声明在manager中调用的function dll.h#ifndef TREEVIEWDLL_H#define TREEVIEWDLL_H#include "treeviewdll_global.h"#incl

2017-04-01 17:28:58 429

原创 Qt软件开发文档1---Cmake编译QT程序

CmakeTest文件夹下 有如下结构: 最外层CMakeLists.txt文件project(MainAPP)cmake_minimum_required(VERSION 3.1.3)add_subdirectory(splitterDll)add_subdirectory(treeViewDll)add_subdirectory(dllManager)add_subdirectory(d

2017-04-01 17:08:52 843

转载 结构体 嵌套使用

1.结构体嵌套<1>指向结构体的指针:struct student *p; struct student student1; p=&student1; 访问结构体变量成员的方式:p->age;(*p).age;sudent1.age;<2>一个结构体做另一个结构体的成员typedef struct item{ char first[10]; char last[10]; int g

2017-03-30 10:55:52 2632

转载 OpenGL.FrameBuffer Object

帧缓冲区对象呢又称为FBO,它允许我们把渲染从窗口的帧缓冲区转移到我们所创建的一个或者多个离屏帧缓冲区。被推荐用于数据渲染到纹理对象,相对于其他同类技术,如数据拷贝或者交换缓冲区等等,使用FBO技术会更高效且易于实现。 此buffer包含了color buffer,depth buffer,stencil buffer. 渲染到纹理这个技术在游戏中经常用来模拟电视机或者监视器等等的效果。1.FB

2017-03-16 11:01:44 459

转载 OpenGL之glUniform函数

函数名:glUniform 功能: 为当前程序对象指定Uniform变量的值。(译者注:注意,由于OpenGL ES由C语言编写,但是C语言不支持函数的重载,所以会有很多名字相同后缀不同的函数版本存在。其中函数名中包含数字(1、2、3、4)表示接受这个数字个用于更改uniform变量的值,i表示32位整形,f表示32位浮点型,ub表示8位无符号byte,ui表示32位无符号整形,v表示接受相应的

2017-03-16 10:35:34 3608

转载 Shadow map 原理与实现流程

摘自 GPU 编程与CG 语言之阳春白雪下里巴人 13.3 Shadow map 原理与实现流程使用 Shadow Map 技术渲染阴影主要分两个过程:生成 depth map(深度图) 和使用 depth map 进行阴影渲染。 生成 depth map 的流程为:1. 以光源所在位置为相机位置,光线发射方向为观察方向进行相机参数设置;2. 将世界视点投影矩阵 worldViewProj

2017-03-13 14:03:34 4078

原创 光照模型小结

1.环境光Ambient LightI(ambdiff) = k(d)I(a)I(a)表示环境光强度(光强),k(d)(0<k(d)<1)为材质对环境光的反射系数,I(ambdiff)为漫反射体与环境光交互反射的光强.2.点光源 Lambert定律(用于粗糙物体)I(ldiff) = k(d)I(l)cosθ I(l)点光源强度,θ入射光方向与顶点法线的夹角,称为入射角(0<=θ<=90度),

2017-03-10 16:30:52 807

转载 DDA算法和Bresenham算法

作者:朱金灿 来源:http://blog.csdn.net/clever101/ DDA算法和Bresenham算法是计算机图形学中绘制直线的两种常用算法。本文具体介绍一下DDA算法和Bresenham算法实现的具体思路。DDA算法主要是根据直线公式y = kx + b来推导出来的,其关键之处在于如何设定单位步进,即一个方向的步进为单位步进,另一个方向的步进必然是小于1。算法的具

2017-03-07 11:21:38 550

原创 js 通过 zip.js打开服务器(本地)中的压缩文件

文件目录: index.html<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8"> <title></title> <style> code{ display: block; padding: 10px; ba

2017-02-28 16:58:12 8718 6

原创 webGL+JS鼠标事件

1.在onload()函数中 //按下松开按钮 //document canvas.onmousedown = handleMouseDown; canvas.onmouseup = handleMouseUp; canvas.onmousemove = handleMouseMove; canvas.

2017-02-24 13:55:16 2435

原创 WebGL写入Alpha

1.drawScene中写入 //设置Alpha var blending = document.getElementById("blending").checked; if (blending) { gl.blendFunc(gl.SRC_ALPHA, gl.ONE); gl.enable(gl.BLEND);

2017-02-24 08:58:29 1164

原创 WebGL写入光照

1.Buffer中每个顶点的法向量数据cubeNormalVertexBuffer = gl.createBuffer(); gl.bindBuffer(gl.ARRAY_BUFFER,cubeNormalVertexBuffer); var normalVertices = [ // Front face 0.0,

2017-02-24 08:54:24 598

翻译 WebGL Lighting

Phong Reflection Model 为方便绘制 将光定义为两种: 1.定向光 directional light. 从它出来的方向,只照射到物体的表面(平行光照射) 2.环境光ambient light 光从任意角度照射到物体的整个表面(现实中ambient light 是由directional light的散射 反射等得来的) 光照射在物体表

2017-02-23 17:38:21 420

原创 WebGL+JS按键事件 +JS键盘码

在onload function中声明 handleKeys(); document.onkeydown = handleKeyDown; document.onkeyup = handleKeyUp;handleKeyDown(event)function handleKeyDown(event) { currentlyPre

2017-02-23 11:43:26 2207

转载 GL_NEAREST和GL_LINEAR的选择

GL_NEAREST和GL_LINEAR前者表示“使用纹理中坐标最接近的一个像素的颜色作为需要绘制的像素颜色”,后者表示“使用纹理中坐标最接近的若干个颜色,通过加权平均算法得到需要绘制的像素颜色”。前者只经过简单比较,需要运算较少,可能速度较快,后者需要经过加权平均计算,其中涉及除法运算,可能速度较慢(但如果有专门的处理硬件,也可能两者速度相同)。从视觉效果上看,前者效果较差,在一些情况下锯齿现象明

2017-02-23 10:54:33 7228

原创 WebGL 写入纹理

1.onload函数中加载initTexture()2.插入纹理var neheTexture; function initTexture() { //创建纹理空间 neheTexture = gl.createTexture(); neheTexture.image = new Image(); neheTexture.image.o

2017-02-22 17:54:51 662

原创 WebGL+JS流程

1.body中定义canvas元素 onload()function<body onload="webGLStart()"><canvas id="tooth-canvas" style="border: none" width="500" height="500"></canvas></body>2.预加载函数 function webGLStart() { var canva

2017-02-21 12:55:23 2273

WPF之自定义窗体的封装

WPF自定义窗体的实现,https://blog.csdn.net/me_badman/article/details/83345502

2018-10-24

WPF学习教程

内含:1. WPF编程2012.PDF; 2. 上百部WPF视频教程。

2018-10-24

GPU编程与CG语言

GPU 编程与CG 语言

2017-03-13

zip.js解压zip文件

zip.js解压zip文件

2017-02-28

js解压读取zip文件

js解压读取zip文件

2017-02-28

QWebChannel

QT与JS的交互

2017-02-08

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除