c4d快速启动语言对话框脚本错误,如何解决“当前页面脚本发生错误”的问题

最近打开网页的时候经常会弹出“当前页面脚本发生错误”对话框,很令人厌烦。每次打开页面都弹出一次,然后底部会提示:是否要在此页面上继续运行脚本?我们可以选的是或者否,选择之后当前页面脚本发生错误对话框就消失了,如下图:

bbdd6bc849065a515b536e6cb8042c01.png

当前页面脚本发生错误对话框

那么针对这种当前页面脚本发生错误问题该怎么解决呢?因为每打开一个页面就提示一次,令人相当讨厌,下面笔者介绍下自己是如何解决当前页面脚本发生错误的,有兴趣的朋友不妨参考下。

如上图,上面提示的是一个alexa工具条大致有问题,我们可以先尝试以下方法解决:

1.启动Internet Explorer浏览器,然后在顶部菜单的“工具”菜单上,单击“Internet 选项”。 之后再在“Internet 选项”对话框中,单击“安全”。 然后选择单击“默认级别”。,之后再点击底部的“确认”即可,如下图所示。

143f8afa797d0461bc4d218f4224b6e2.png

设置IE安全为默认级别

2、然后再次进入浏览器Internet 选项,切换到“程序”选项卡,然后再点击底部的“管理加载项”,如下图:

f56caed11c99b4ab3f0e40ca16c73cbd.png

管理加载项

之后在弹出的管理加载中,将一些可疑的加载项全部禁用即可,如下图:

3ccd3a5dafb479c9a77d78c19579de92.png

禁用加载项

通过以上两项设置基本都可以解决问题,如果问题依旧请再尝试,进入控制面板中的“系统”,切换到“高级”选项卡,单击“错误报告”按钮,选中“禁用错误报告”选项,并选中“但在发生严重错误时通知我”,最后单击“确定”按钮。

最后在打开浏览器,如果问题依旧,请点击“工具”进入Internet 选项,然后选择删除历史记录与Cookie等即可,如下图:

b610e6d7313ba5d7f6c389e53626bda1.png

删除IE历史记录

通常这些方法一般都可以解决问题,如果问题还是没有解决,请联系小编或先下载好一个浏览器,再卸载本浏览器,之后安装新浏览器就可以得到解决了。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
AE CS4 CDkeyae 附加表达式中英对照 全局对象 Comp comp(name) 用另一个名字给合成命名。 Footage footage(name) 用另一个名字给脚本标志命名。 Comp thisComp 描述合成内容的表达式。例如:thisComp.layer(2) Layer, Light, or Camera thisLayer 是对层本身的描述,thisLayer是一个默认的对象,对它的应用是可选的。例如, 用表达式 thisLayer.width 或 width 可获得同样的结果。 Property thisProperty 描述属性的表达式。例如,如果写一个旋转属性的表达式就能获取旋转属性的值。 Number time 描述合成的时间, 单位是秒。 Number colorDepth 返回8或16表示的彩色深度位数值。例如, 当项目的每通道的彩色深度为16位时colorDepth 返回16 。 Number posterizeTime(framesPerSecond) {framesPerSecond 是一个数}返回或改变帧率。允许用这个表达式设置比合成低的帧率。 向量数学方法 Array add(vec1, vec2) {vec1 和 vec2 是数组} 两个向量相加。 Array sub(vec1, vec2) {vec1 和 vec2 是数组}两个向量相减。 Array mul(vec1, amount) {vec1 是数组, amount 是数} 向量的每个元素被 amount相乘。 Array div(vec1, amount) {vec1 是数组, amount 是数}向量的每个元素被 amount相除。 Number or Array Clamp(value, limit1, limit2) 限制value中每个元素的值在 limit1 到 limit2之间。 Number dot(vec1, vec2) {vec1 和 vec2 是数组} 返回点积, 结果为两个向量相乘。 Array [2 or 3] cross(vec1, vec2) {vec1 和 vec2 是数组 [2 or 3]} 返回向量的交积。 Array normalize(vec) {vec 是数组} 格式化一个向量,如某长度表示为1.0. Number length(vec) {vec是数组}返回向量的长度。 Number length(point1, point2) {point1 and point2 是数组} 随机数方法 Nothing seedRandom(seed, timeless=false) {seed 是一个数, 默认 timeless 为 false} 取现有的seed 增量一个随机值,这个随机值依赖于层的 index (number) 和 stream (property),但不总是这样. 例如, seedRandom (n, true)通过给第二个参数赋值 true ,seedRandom()获取一个0到1间的随机数. Number random()返回0和1间的随机数. Number or Array random(maxValOrArray) {maxValOrArray 是一个数或数组}返回0到maxVal间的数,维度 与 maxVal相同; 或返回与maxArray相同维度的数组, 数组的每个元素在 0 到 maxArray之间 Number or Array random(minValOrArray, maxValOrArray) {minValOrArray 和 maxValOrArray 是一个数或数组} 返回一个minVal 到 maxVal间的数, 或返回一个与 minArray和maxArray有相同维度的数组,其每个元素的范围在 minArray 与 maxArray之间.例如, random([100, 200], [300, 400]) 返回数组的第一个值在 100 到300间, 第二个值在 200 到400间.如果两个数组的维度不同,较短的一个后面自动用0补齐. Number gaussRandom()返回一个0到1之间的随机数. 结果为钟形分布,大约90%的结果在 0 到1之间, 剩余10%在边沿. Number or Array gaussRandom(maxValOrArray){maxValOrArray是一个数或数组}当用maxVal,它返回一个0到maxVal之间的随机数. 结果为钟形分布,大约90%的结果在0到maxVal之间,剩余10%在边缘.当用maxArray,它返回一个与maxArray相同维度的数组, 结果为钟形分布,大约90%的结果在 0到maxArray之间, 剩余10%在边缘. Number gaussRandom(minValOrArray, maxValOrArray){minValOrArray和maxValOrArray是一个数或数组} 当用minVal和 maxVal, 它返回一个minVal到maxVal之间的随机数. 结果为钟形分布,大约90%的结果在minVal到maxVal之间, 剩余10%在边缘.当用minArray和maxArray, 它返回一个与 minArray和maxArray相同维度的数组, 结果为钟形分布,大约90%的结果在 minArray到maxArray之间, 剩余10%在边缘. 剩余10%在边缘. Number noise(valOrArray) {valOrArray是一个数或数组 [2 or 3]}返回一个0到1间的数.噪声不是事实上的随机,但它是在样本附近相关的随机数.它基于花边噪声 . 例如, add(position, noise(position)*50). 插值方法 Number or Array linear(t, value1, value2) {t 是一个数, value1 和 value2 是一个数或数组}当t的范围从0到1时,返回一个从value1到value2的线性插值。当 t <= 0时返回value1,当 t >= 1时返回 value2 。 . Number or Array linear(t, tMin, tMax, value1, value2) {t, tMin和 tMax are 数, value1和value2 是数或数组} 当 t <= tmin时返回value1;当t >= tMax时,返回value2 ;当tMin < t < tMax 时, 返回 value1和value2 的线性联合。 Number or Array ease(t, value1, value2) {t 是一个数, value1 和 value2 是数或数组} 返回值与linear相似, 但在开始和结束点的速率都为0。这种方法的结果是动画非常平滑。 Number or Array ease(t, tMin, tMax, value1, value2) {t, tMin, 和 tMax 是数, value1 和 value2 是数或数组} 返回 值与 linear相似, 但在开始和结束点的速率都为0。这种方法的结果是动画非常平滑。 Number or Array easeIn(t, value1, value2) {t 是一个数, and value1 and value2 是数或数组} 返回 值与ease相似, 但只在切入点value1 的速率为0,靠近value2 一边是线性的。 Number or Array easeIn(t, tMin, tMax, value1, value2) {t, tMin和tMax 是一个数, value1和value2 是数或数组}返回 值与ease相似, 但只在切入点tMin 的速率为0,靠近tMax 一边是线性的。 Number or Array easeOut(t, value1, value2) {t 是一个数, value1和value2 是数或数组}.返回 值与ease相似, 但只在切入点value2 的速率为0,靠近value1 一边是线性的。 Number or Array easeOut(t, tMin, tMax, value1, value2) {t, tMin和tMax 是数, value1 value2 是数或数组} 返回 值与ease相似, 但只在切入点tMax的速率为0,靠近tMin 一边是线性的。 彩色转换方法 Array [4] rgbToHsl(rgbaArray) {rgbaArray 是数组 [4]} 转换 RGBA 彩色空间到 HSLA彩色空间。输入数组指定红、绿、蓝、透明, 它们的范围都在 0.0 到 1.0之间。结果值是一个指定色调、饱和度、亮度和透明的数组,它们的范围都在 0.0 到 1.0之间。例如, rgbToHsl.effect("Change Color")("Color To Change")。 Array [4] hslToRgb(hslaArray) {hslaArray 是数组[4]}. 转换 HSLA彩色空间到RGBA 彩色空间。其操作与rgbToHsl相反。 其它数学方法 Number degreesToRadians(degrees)转换度到弧度。 Number radiansToDegrees(radians) 转换弧度到度。 Comp属性和方法 -------------------------------------------------------------------------------- Layer, Light, or Camera layer(index) {index 是一个数} 得到层的序数(在时间线窗口中的顺序). 例如, thisComp.layer(3). Layer, Light, or Camera layer("name") {name是一个字串} 得到层名。指定的名字与层名匹配,或者在没有层名时与源名匹配。如果存在重名,After Effects 使用时间线窗口中的第一个. 例如, thisComp.layer("Solid 1"). Layer, Light, or Camera layer(otherLayer, relIndex) {otherLayer 一 个层对象, relIndex 是一个数} 得到otherLayer (层名)上面或下面relIndex (数) 的一个层。 例如, layer(thisLayer, -2) 返回 在时间线窗口中比写这个表达式的层高两层的一个层。 Number marker(markerNum) {markerNum 是一个数}得到合成中一个标记点的时间。你可以用它减淡标记点的透明,实现淡出。例如, markTime = thisComp.marker(1); linear(time, markTime - .5, markTime, 100, 0). Number numLayers 返回 合成中层的数量。 Camera activeCamera 从在当前帧中着色合成所经过的摄象机获取值。这不一定是你在合成窗口所看到的。 Number width 返回合成的宽度,单位为像素(pixels.) Number height 返回合成的高度,单位为像素(pixels.) Number duration 返回合成的持续时间值,单位为秒。 Number frameDuration 返回画面的持续时间. Number shutterAngle 返回合成中快门角度的度数. Number shutterPhase 返回合成中快门相位的度数 Array [4] bgColor 返回合成背景的颜色。 Number pixelAspect 返回合成中用width/heigh表示的像素(pixel )宽高比。 String name 返回合成的名字。 脚本属性和方法 -------------------------------------------------------------------------------- Number width 返回脚本的宽度,单位为像素。 Number height返回脚本的高度,单位为像素。 Number duration 返回脚本的持续长度,单位为秒。 Number frameDuration 返回画面的持续长度,单位为秒。 Number pixelAspect 返回脚本的像素比, 表示为 width/height. String name 返回脚本的名字。 层子对象属性和方法 -------------------------------------------------------------------------------- Comp or Footage source 返回层的源 Comp 或源Footage 对象。默认时间是在这个源中调节的时间。例如, source.layer(1).position. Effect effect(name) {name是一个字串} 返回 Effect 对象。 After Effects 在效果控制窗口中用这个名字查找对应的效果。这个名字可以是默认名,也可以是用户自定义名。如果这里有一些相同的效果名则选择效果控制窗口中同名字的最上面的一个效果。 Effect effect(index) {index 是一个数} 返回 Effect 对象。After Effects 在效果控制窗口中用这个序号查找对应的效果。起始于1 且从顶部开始。 Mask mask(name) {name是一个字串} 返回层 Mask 对象。 这个名字可以是默认名,也可以是用户自定义名。 Mask mask(index) {index 是一个数} 返回层 Mask 对象。After Effects 在时间线窗口中用这个序号查找对应的遮罩。起始于1 且从顶部开始。 层的一般属性和方法 Number width 返回以像素为单位的层宽度。 它与 source.width相同。 Number height 返回以像素为单位的层高度。 它与 source.height相同。 Number index 返回合成中层数. Layer, Light, or Camera parent 返回层的父层对象, 例如, position[0] + parent.width. Boolean hasParent 如果有父层返回 true ,如果没有父层返回 false . Number inPoint 返回层的入点,单位为秒. Number outPoint 返回层的出点,单位为秒. Number startTime 返回层的开始时间,单位为秒. Boolean hasVideo 如果有视频(video)返回 true ,如果没有(video)返回 false. Boolean hasAudio 如果有音频(audio)返回 true ,如果没有音频(audio)返回 false. Boolean active 如果层的视频开关(眼睛 )打开返回 true ,如果层的视频开关(眼睛 )关闭返回 false. Boolean audioActive 如果层的音频开关(喇叭 )打开返回 true ,如果层的音频开关(喇叭 )关闭返回 false. Layer 特征属性和方法 -------------------------------------------------------------------------------- Property [2 or 3] anchorPoint 返回层空间内层的锚点值. Property [2 or 3] position 如果该层没有父层,返回本层在世界空间的位置值;如果有父层,返回本层在父层空间的位置值 . Property [2 or 3] scale 返回层的缩放值,表示为百分数. Property rotation 返回层的旋转度数, 对于3D 层, 它 返回 z旋转度数. Property [1] opacity 返回层的透明值,表示为百分数. Property [2] audioLevels 返回层的音量属性值,单位为分贝.这是一个2维值;第一个值表示左声道的音量,第二个值表示右声道的音量.这个值不是源声音的幅度,而是音量属性关键帧的值. Property timeRemap 当时间重测图被激活时,返回重测图属性时间值,单位是秒. Marker Number marker.key(index) {index 是一个数} 返回层的标记数属性值. 可能用到的方法和属性只有key(), nearestKey和numKeys. Marker Number marker.key("name") {name是一个字串} 返回层中与指定名对应的标记号.这个名字是标记名, 它在标记对话框的注释区,例如, marker.key("ch1"). 这个值对于 marker keys是一个字串, 不是数字.例如, m1 = marker.key("Start").time; m2 = marker.key("End").time; linear(time, m1, m2, 0, 100); Marker Number marker.nearestKey 返回最接近当前时间的标记. Number marker.numKeys 返回层中标记的总数. String name 返回层名. Layer 3D属性和方法 -------------------------------------------------------------------------------- Property [3] orientation对3D层 ,返回3D 方向的度数。 Property [1] rotationX 对3D层,返回 x旋转值的度数。 Property [1] rotationY 对3D层,返回 Y 旋转值的度数。 Property [1] rotationZ 对3D层,返回 Z 旋转值的度数。 Property [1] lightTransmission 对3D层,返回光的传导属性值。 Property castsShadows 如果层投射阴影返回 1.0 。 Property acceptsShadows 如果层接受阴影返回 1.0 。 Property acceptsLights 如果层接受灯光返回 1.0 。 Property ambient 返回环境因素的百分数值。 Property diffuse 返回慢射因素的百分数值。 Property specular 返回镜面因素的百分数值。 Property shininess 返回发光因素的百分数值。 Property metal 返回才质因素的百分数值。 层空间转换方法 -------------------------------------------------------------------------------- Array [2 or 3] toComp(point, t = time) {point 是一个数组[2 or 3], t 是一个数} 从层空间转换一个点到合成空间,例如, toComp(anchorPoint)。 Array [2 or 3] fromComp(point, t=time) {point 是一个数组[2 or 3], t 是一个数}从合成空间转换一个点到层空间。得到的结果在 3D 层可能是一个非0值。例如 (2D layer), fromComp(thisComp.layer(2).position). Array [2 or 3] toWorld(point, t=time) {point 是一个数组[2 or 3], t 是一个数} 从层空间转换一个点到视点独立的世界空间。例如, toWorld.effect("Bulge")("Bulge Center"). Array [2 or 3] fromWorld(point, t=time) {point 是一个数组[2 or 3], t 是一个数}从世界空间转换一个点到层空间。例如, fromWorld(thisComp.layer(2).position). Array [2 or 3] toCompVec(vec, t=time) {vec 是一个数组[2 or 3], t 是一个数} 从层空间转换一个向量到合成空间。例如, toCompVec([1, 0]). Array [2 or 3] fromCompVec(vec, t=time) {vec 是一个数组[2 or 3], and t 是一个数} 从合成空间转换一个向量到层空间例如 (2D layer), dir=sub(position, thisComp.layer(2).position); fromCompVec(dir). Array [2 or 3] toWorldVec(vec, t=time) {vec 是一个数组[2 or 3], t 是一个数} 从层空间转换一个向量到世界空间。例如, p1 = effect("Eye Bulge 1")("Bulge Center"); p2 = effect("Eye Bulge 2")("Bulge Center"); toWorld(sub(p1, p2)). Array [2 or 3] fromWorldVec(vec, t=time) {vec 是一个数组[2 or 3], t 是一个数}从世界空间转换一个向量到层空间。例如, fromWorld(thisComp.layer(2).position). Array [2] fromCompToSurface(point, t=time) {point 是一个数组[2 or 3], t 是一个数} 在合成空间中从激活的摄象机观察到的位置的层表面(Z值为0)定位一个点。这对于设置效果控制点有用。仅用于3D层。 摄象机属性和方法 -------------------------------------------------------------------------------- Property [3] pointOfInterest 返回在世界空间中摄象机兴趣的的值。 Property zoom 返回摄象机的缩放值,单位为像素。 Property depthOfField 如果摄象机景深打开返回 1,否则返回0。 Property focusDistance 返回摄象机焦距值,单位为像素。 Property aperture返回摄象机光圈值,单位为像素。 Property blurLevel 返回摄象机的模糊水平的百分数。 Boolean active (a) 如果摄象机的视频开关 打开, 返回 true ; (b) 当前时间在摄象机的出入点之间,(c)且它是时间线窗口中列出的第一个摄象机,若以上条件之一不满足,返回 false 。 灯光属性和方法 -------------------------------------------------------------------------------- Property [3] pointOfInterest 在工作区 返回灯光兴趣点。 Property intensity 返回灯光亮度的百分数。 Property [4] color 返回灯光彩色值。 Property coneAngle 返回灯光光锥角度的度数。 Property coneFeather 返回灯光光锥的羽化百分数。 Property shadowDarkness 返回灯光阴影暗值的百分数。 Property shadowDiffusion 返回灯光阴影扩散的像素。 Note: 灯光对象的大部分属性和方法与层对象相同, 除 source, effect, mask, width, height, anchorPoint, scale, opacity, audioLevels, timeRemap, 和所有的material 属性。 效果的属性和方法 -------------------------------------------------------------------------------- Boolean active 返回 a true value if the effect is turned on in both the 如果效果在时间线窗口和效果控制窗口都打开返回 true , 如果在以上任意一个窗口关闭,返回false。 Property param(name) {name是一个字串} 返回 效果里面的属性。例如, .effect("Bulge")("Bulge Height")。效果点控制总是在层空间。 Property param(index) {index 是一个数} 返回 效果里面的属性。例如, .effect("Bulge")(4) 返回 Bulge Height 属性。 效果点控制总是在层空间。 遮罩属性和方法 -------------------------------------------------------------------------------- Property MaskOpacity 返回遮罩透明值的百分数。 Property MaskFeather 返回遮罩羽化的像素值。 Boolean invert 如果遮罩是反向的,返回 true ;否则返回 false。 Property MaskExpansion 返回 遮罩的像素。 String name 返回遮罩名。 String name 返回效果名。 特征属性和方法 -------------------------------------------------------------------------------- Number or Array value 返回当前时间的属性值。 Number or Array valueAtTime(t) {t 是一个数} 返回指定时间(单位为秒)的属性值。 Number or Array velocity 返回当前时间的即时速率。对于空间属性,例如位置,它返回切向量值。结果与属性有相同的维度。 Number or Array velocityAtTime(t) {t 是一个数} 返回指定时间的即时速率。 Number speed 返回 1D量,正的速度值,等于 在默认时间属性的改变量。 这个元素仅用于空间属性。 Number speedAtTime(t) {t 是一个数} 返回在指定时间的空间速度。 Number or Array wiggle(freq, amp, octaves=1, ampMult=.5, t=time) {freq, amp, octaves, ampMult, 和 t 是数} 属性值随机摆动(wiggles) 。 Freq 计算每秒摆动的次数,用于计算属性的基本幅度单位,octaves 是加到一起的噪声的倍频数,ampMult 与 amp 相乘的倍数。 t 基于开始时间。例如, position.wiggle(7, 30, 3). Number or Array temporalWiggle(freq, amp, octaves=1, ampMult=.5, t=time) {freq, amp, octaves, ampMult, 和 t 是数} 取样摆动时的属性值。Freq 计算每秒摆动的次数,用于计算属性的基本幅度单位,octaves 是加到一起的噪声的倍频数,ampMult 与 amp 相乘的倍数。 t 基于开始时间。 对于这个函数意味着取样的属性必须被激活,因为这个函数仅在取样期间改变属性值,而不是改变了对应的属性值。. 例如, scale.temporalWiggle(5, .2). Number or Array smooth(width=.2, samples=5, t=time) {width, samples, 和 t 是数} 应用一个箱形滤波器到指定时间的属性值,并且随着时间的变化使结果变得平滑。Width (秒) 是经过滤波器平均时间的范围。Samples 等于离散样本的平均间隔数 。通常, 你需要的采样( samples)数是奇数。例如, position.smooth(.1, 5). Number or Array loopIn(type = "cycle", numKeyframe = 0)在层中从入点到第一个关键帧之间循环一个指定时间段的内容。被指定为循环内容的基本段,是从层的第一个关键帧向后到层的出点方向的某个关键帧间的内容。 numKeyframe是指定以第一个关键帧为起点设定循环基本内容的关键帧数目(计数不包括第一个关键帧)。例如, loopIn("cycle", 1)从层的入点开始到第一个关键帧结束循环第一个关键帧到第二个关键帧间的内容。循环的次数由入点到第一个关键帧间的时间和循环内容长度决定 。 Number or Array loopOut(type = "cycle", num关键帧 = 0) 在层中从最后一个关键帧到层的出点之间循环一个指定时间段的内容。被指定为循环内容的基本段,是从层的最后关键帧向前到层的入点方向的某个关键帧间的内容。 numKeyframe是指定以最后一个关键帧为倒数起点设定循环基本内容的关键帧数目(计数不包括最后一个关键帧)。例如, loopOut("cycle", 1)从层的最后关键帧开始到出点结束循环最后一个关键帧到倒数第二个关键帧间的内容。循环的次数由最后关键帧到出点间的时间和循环内容长度决定 。 Number or Array loopInDuration(type = "cycle", duration = 0)在层中从入点到第一个关键帧之间循环一个指定时间段的内容。被指定为循环内容的基本段,是从层的第一个关键帧向后到层的出点方向duration秒的内容。 duration是指定以第一个关键帧为起点设定循环基本内容的时间秒数。例如, loopInDuration("cycle", 1) 从层的入点开始到第一个关键帧结束循环第一个关键帧以后1秒的内容。循环的次数由入点到第一个关键帧间的时间和循环内容长度决定 。 Number or Array loopOutDuration(type = "cycle", duration = 0) 在层中从最后一个关键帧到层的出点之间循环一个指定时间段的内容。被指定为循环内容的基本段,是从层的最后关键帧向前到层的入点方向duration秒的内容。 duration是指定以最后一个关键帧为倒数起点设定循环基本内容的的时间秒数。例如,loopOutDuration("cycle", 1) 从层的最后关键帧开始到出点结束循环最后一个关键帧到倒数倒数1秒时间的内容。循环的次数由最后关键帧到出点间的时间和循环内容长度决定 。 Key key(index) 用数字 返回 key对象。例如, key(1) 返回第一个关键帧对象。 当访问 key 对象时能获得Time, Index, 和属性值。 例如, 下面的表达式给出了第3个位置关键帧处的位置值:position.key(3).value。下面的表达式,当将它写到设置透明属性动画的层时,将忽略在透明属性中设置的关键帧的值而仅用关键帧定位在什么时间层闪现。d = Math.abs(time - nearestKey(time).time); easeOut(d, 0, .1, 100, 0). Key key(markerName) 用这个名字 返回标记的 key 对象。仅用于标记属性。 Key nearestKey(time) 返回指定时间最近的关键帧对象。 Number numKeys 返回 在一个属性中 关键帧 的数目。 关键帧属性和方法 -------------------------------------------------------------------------------- Number or Array value 返回关键帧的值。 Number time 返回关键帧的时间。
初 级 篇 \第1章 Qt初步实践 2 \1.1 第一个Qt程序 2 \1.1.1 建立主程序 2 \1.1.2 建立工程 3 \1.1.3 编译/运行第一个Qt应用程序 8 \1.1.4 第一个Qt程序的代码分析 8 \1.2 使用Qt布局管理器 11 \1.3 关联操作 12 \1.4 小结 13 \第2章 对话框——QDialog 14 \2.1 自定义对话框 14 \2.1.1 建立新类 14 \2.1.2 添加子窗口部件 15 \2.2 加入主程序 22 \2.3 Qt内建(built-in)对话框 24 \2.4 小结 34 \第3章 基础窗口部件——QWidget 35 \3.1 Qt设计器绘制窗口部件 35 \3.1.1 Qt设计器基础 35 \3.1.2 绘制窗口部件 40 \3.2 程序中引入自定义窗口部件 47 \3.2.1 直接使用方式 47 \3.2.2 单一继承方式 49 \3.2.3 多继承方式 51 \3.3 Qt的信号和槽机制 53 \3.3.1 基本原理 53 \3.3.2 设计信号和槽 55 \3.3.3 信号和槽的自动关联 62 \3.4 窗口标志及几何布局 63 \3.4.1窗口标志 64 \3.4.2窗口部件的几何布局 66 \ \3.5 Qt样式表 74 \3.5.1 样式表语法 74 \3.5.2 样式表的应用 76 \3.6 Qt对象模型 79 \3.6.1 元对象系统 79 \3.6.2 属性系统 80 \3.6.3 对象树 83 \3.7 小结 86 \第4章 程序主窗口——QMainWindow 87 \4.1 QMainWindow主窗口框架 87 \4.2 Qt设计器绘制主窗口 88 \4.2.1 菜单 90 \4.2.2 工具栏 93 \4.2.3 中心部件 96 \4.3 代码创建主窗口 98 \4.3.1 创建资源文件 98 \4.3.2 定义主窗口类 98 \4.4 锚接部件 102 \4.5 状态栏 105 \4.6 实现文本编辑器功能 107 \4.7 多文档 118 \4.8 打印文档 119 \4.9 小结 120 \第5章 布局管理 121 \5.1 Qt布局管理器——QLayout 121 \5.1.1 Qt布局管理器简介 121 \5.1.2 布局管理器及窗口部件大小策略 \5.1.2 的应用 125 \5.2 分裂器部件QSplitter 132 \5.3 栈部件QStackedWidget 134 \5.4 工作空间部件QWorkspace 135 \5.5 多文档区部件QMdiArea 148 \5.6 小结 150 \ \中 级 篇 \第6章 2D绘图 152 \6.1 Arthur绘图基础 152 \6.1.1 绘图 152 \6.1.2 绘图设备 174 \6.2 坐标系统与坐标变换 175 \6.2.1 坐标系统 175 \6.2.2 坐标变换 175 \6.3 用不同的字体 177 \6.4 绘图路径——QPainterPath 180 \6.5 QImage与QPixmap绘图设备 182 \6.5.1 QImage 182 \6.5.2 Pixmap 183 \6.6 组合模式绘图 192 \6.7 Graphics View框架 200 \6.7.1 Graphics View体系结构 200 \6.7.2 Graphics View坐标系统 201 \6.7.3 深入Graphics View 202 \6.8 图形图像打印 208 \6.8.1 普通打印过程 208 \6.8.2 特殊窗口部件的打印 210 \6.9 小结 211 \第7章 拖放操作和剪贴板 212 \7.1 拖放操作 212 \7.1.1 拖放操作 212 \7.1.2 定义新的拖放操作类型 214 \7.1.3 Graphics View框架下的拖放 \7.1.3 操作 215 \7.2 使用剪贴板 217 \7.3 小结 218 \第8章 文件处理 219 \8.1 读写文本文件 219 \8.2 操作二进制文件 220 \8.3 临时文件 222 \8.4 目录操作和文件管理 222 \8.4.1 目录操作 222 \8.4.2 文件管理 224 \8.5 监视文件系统变化 225 \8.6 文件引擎 226 \8.7 小结 226 \第9章 网络 227 \9.1 FTP客户端 227 \9.2 HTTP客户端 235 \9.3 UDP应用 239 \9.4 TCP应用 243 \9.5 高级应用 253 \9.5.1 底层操作 253 \9.5.2 使用代理 256 \9.5.3 扩展Qt网络功能 256 \9.5.4 效率问题 260 \9.6 小结 260 \第10章 多线程 261 \10.1 启动一个线程 261 \10.2 线程互斥与同步 264 \10.2.1 临界区问题 265 \10.2.2 使用QMutex 265 \10.2.3 使用QSemaphore 266 \10.2.4 使用QWaitConditon 269 \10.3 线程的其他问题 271 \10.3.1 优先级问题 271 \10.3.2 死锁及优先级反转问题 274 \10.3.3 本地存储问题 275 \10.4 Qt的线程机制 276 \10.4.1 可重入与线程安全 276 \10.4.2 线程与事件循环 277 \10.4.3 线程与信号/槽机制 278 \10.4.4 多线程网络示例 279 \10.5 小结 282 \第11章 事件处理 283 \11.1 事件机制 283 \11.1.1 事件来源与类型 283 \11.1.2 事件处理方法 284 \11.2 事件处理器 285 \11.3 事件过滤器 290 \11.4 加快用户界面响应 292 \11.4.1 使用processEvents()函数 293 \11.4.2 使用定时器 294 \11.5 小结 296 \第12章 数据库 297 \12.1 连接数据库 297 \12.2 常用数据库操作 301 \12.2.1 使用SQL语句 302 \12.2.2 事务操作 304 \12.2.3 使用SQL模型类 304 \12.2.4 数据表示 308 \12.3 Qt数据库应用 310 \12.3.1 使用嵌入式数据库 310 \12.3.2 使用Oracle数据库 313 \12.4 小结 325 \第13章 Qt的模板库和工具类 326 \13.1 Qt容器类 326 \13.1.1 QList、QLinkedList和QVector 327 \13.1.2 QMap、QHash 332 \13.2 QString 334 \13.2.1 隐式共享 335 \13.2.2 内存分配策略 336 \13.2.3 操作字符串 336 \13.2.4 查询字符串数据 337 \13.2.5 字符串的转换 338 \13.3 QVariant 339 \13.4 Qt的算法 341 \13.5 正则表达式 342 \13.5.1 基本的正则表达式 342 \13.5.2 文字捕获 344 \13.6 小结 345 \高 级 篇 \第14章 XML 348 \14.1 DOM 348 \14.1.1 DOM入门 348 \14.1.2 使用DOM 348 \14.1.3 使用DOM写XML文件 352 \14.2 SAX 354 \14.3 基于流的XML API 359 \14.4 小结 365 \第15章 模型/视图结构 366 \15.1 模型/视图结构与MVC设计 \15.1 模式 366 \15.1.1 模型 366 \15.1.2 视图 367 \15.1.3 代理 368 \15.2 使用已有的模型视图类 368 \15.2.1 使用已有的模型和视图类 368 \15.2.2 QListWidget、QtreeWidget \15.2.2 和QTableWidget 370 \15.3 模型(Models) 381 \15.3.1 模型索引 381 \15.3.2 模型角色 382 \15.3.3 自定义模型 382 \15.3.4 代理模型 385 \15.4 视图(Views) 390 \15.4.1 自定义视图 390 \15.4.2 数据-窗口部件映射 390 \15.5 代理(Delegates) 396 \15.5.1 使用已有的代理 396 \15.5.2 自定义代理 396 \15.6 拖放与选中 401 \15.6.1 拖放操作 401 \15.6.2 选中模式 404 \15.7 小结 405 \第16章 高级绘图 406 \16.1 3D绘图——使用OpenGL 406 \16.1.1 创建OpenGL窗口 406 \16.1.2 着色 410 \16.1.3 3D和旋转 411 \16.1.4 纹理贴图 414 \16.2 SVG 417 \16.2.1 绘制SVG图形 418 \16.2.2 生成SVG文件 419 \16.3 小结 420 \第17章 进程与进程间通信 421 \17.1 使用QProcess 421 \17.2 Linux进程间通信 423 \17.3 新型进程间通信——D-Bus 425 \17.3.1 D-Bus简介 425 \17.3.2 安装QtDBus模块 427 \17.3.3 接口与适配器 429 \17.3.4 QtDBus应用实例 432 \17.4 小结 441 \第18章 Qt插件 442 \18.1 Qt插件开发基础 442 \18.2 Qt设计器插件 443 \18.2.1 使用Scratchpad 443 \18.2.2 提升自定义窗口部件 444 \18.2.3 Qt设计器插件开发 444 \18.3 编写数据库插件 451 \18.4 自定义风格插件 455 \18.5 小结 458 \第19章 脚本——QtScript 459 \19.1 执行ECMAScript脚本 459 \19.2 QtScript中的信号和槽 460 \19.3 使用JavaScript操作Qt对象 463 \19.4 基于Prototype的继承 467 \19.5 小结 467 \第20章 国际化 468 \20.1 Unicode与字符编码 468 \20.1.1 Unicode 468 \20.1.2 汉字编码 469 \20.1.3 编码转换 469 \20.2 Qt Linguist 471 \20.2.1 发布管理器 472 \20.2.2 翻译器 474 \20.2.3 加载翻译文件 476 \20.3 语言切换 477 \20.4 小结 477 \第21章 Qt单元测试框架 478 \21.1 QTestLib框架 478 \21.1.1 QTestLib 478 \21.1.2 第一个Qt单元测试 478 \21.2 数据驱动测试 480 \21.3 GUI测试 481 \21.2.1 仿真GUI事件 481 \21.2.2 重放GUI事件 483 \21.3 小结 484 \附录A Qt安装 485 \附录B Qt集成开发环境 492 \附录C qmake速查 501 \附录D 深入Qt源代码 506 \附录E Qt资源 512 序言/前言    前言 \两年前,当我们准备在Linux系统下开发GUI应用软件时,首先想到的就是选择一个GUI应用框架来简化开发。在三大GUI框架GTK+、Qt和wxWidgets 之间,我们选择了Qt 4工具包。作为重量级桌面系统KDE多年的坚实基础,Qt应该是经受了足够的考验。当我们准备编写自己的应用软件时,却发现图书市场上没有一本关于Qt 4的书籍,仅有的只是一些关于Qt 3的资料。由于Qt 3到Qt 4的变化很大,甚至源代码都不兼容,所以这些资料的参考价值并不是太大。于是,我们通过阅读Qt的assistant和examples来学习并使用Qt 4。在逐渐掌握Qt 4的过程中,我们萌发了编写一本关于Qt 4的书来帮助初学者入门的想法。最终,在电子工业出版社博文视点资讯有限公司的大力支持下,我们的想法终于得以付诸实施。 \关于Qt \Qt是挪威的Trolltech公司的旗舰产品,作为跨平台的应用程序框架,是开源的桌面系统KDE的基石。Google Earth,Skype,Opera,Adobe Photoshop Elements,Peforce Visual Client等软件都是基于Qt写成。自Trolltech公司1996年推出Qt 1.0版以来,Qt已经从2.x,3.x发展到了现在的Qt 4.3,本书就是基于最新的Qt 4.3写成。因为Qt 4框架设计得非常优秀,在2006年的第16届Jolt大奖上,Qt 4获得了类库、框架和组件类别的Jolt生产力奖。 \和Java的“一次编译,到处运行”跨平台不同的是,Qt是源代码级的跨平台,一次编写,随处编译。一次开发的Qt应用程序可以移植到不同的平台上,只需重新编译即可运行。Qt支持的平台有: \? Microsoft Windows,包括Windows 98/NT 4.0/2000/XP/Vista; \? UNIX/X11,包括Linux,Sun Solaris,HP-UX,HP Tru64 UNIX,IBM AIX,SGI IRIX等; \? Mac OS X,支持Mac OS X 10.3以上版本; \? 嵌入式Linux,包括支持framebuffer的所有Linux平台。 \Qt还支持嵌入式系统,Qt的嵌入式版本称为Qtopia Core,可以在多种处理器上运行,目标操作系统通常是嵌入式Linux。Qtopia Core应用程序直接使用framebuffer,而不是笨重的X Window系统。Qt相关的另一个产品——Qt Jambi,则是基于Qt库构建的,面向Java程序员的应用程序框架。另外,还有一些开源的在其他语言上的Qt绑定,如C#/Mono的绑定Qyoto,Python的绑定PyQt,Ruby的绑定QtRuby等。有了这些产品,编写Qt程序不再是C++程序员的专利了。 \Qt的发行版本有商业版和开源版。开源版遵循QPL(Q Public License)和GPL(GNU General Public License)协议,商业版则提供了一些特有的模块,如Windows平台上的ActiveQt框架,Oralce、DB2等商业数据库的驱动。本书主要介绍开源版的Qt 4.3。 \阅读本书的基础 \阅读本书的读者需要具有基本的C++程序设计知识,毕竟Qt是用C++编写的应用程序框架。如果要学习QtScript,还需要了解JavaScript。 \本书的结构 \本书共21章,每章讨论一个专题。章节安排上基本采用循序渐进、由浅到深的原则。但最后的高级篇中的章节没有很强的关联,可以按照随意的顺序阅读。每章内容及作者分述如下: \篇章 章 名 作者 内 容 简 介 页码 \初级篇 第1章 Qt初步实践 卢传富 建立了第一个较简单的Qt应用程序,在GUI用户界面中显示一行中文。 2 \ 第2章 对话框 \——QDialog 卢传富介绍了Qt的对话框类QDialog,实现了一个自定义的登录对话框,举例说明了Qt提供的内建对话框类的应用。 14 \ 第3章 基础窗口部件——QWidget 卢传富 \蔡志明首次引入Qt设计器的使用,绘制并实现了一个查找文件功能的部件,介绍了Qt应用程序中使用ui文件的基本方法以及Qt样式表;较深入地分析了Qt对象模型的一些基本知识,涉及信号和槽机制、Qt元对象系统、属性系统和对象树机制,以及部件类型和部件的几何布局等内容。 35 \ 第4章 程序主窗口—— QMainWindow 卢传富 Qt应用程序的主窗口是由多个部件/组件构成的框架,本章通过一个简单文本编辑器的例子,介绍了主窗口的菜单、工具条、中心部件、锚接部件和状态条,并通过Qt设计器绘制和手写代码两种方法实现了简单文本编辑器主窗口界面的排布和管理。 87 \ 第5章 布局管理 卢传富布局管理是GUI应用程序编程的一个重要方面。Qt提供了多种布局管理部件,包括Qt布局管理器、分裂器、栈部件、工作空间部件和多文档区部件等。本章一一介绍了这些部件,并举例说明了它们在图形用户界面编程中的应用。 121 \中级篇 第6章 2D绘图 蔡志明本章内容较多,包括Qt的绘图要素、图形变换与坐标系统、绘图设备、图像处理、图像打印等。最后讲解了Qt 4图形系统的模型视图框架——Graphics View框架。 152 \ 第7章 拖放操作与剪贴板 蔡志明 本章简要地说明了基于MIME的拖放操作和剪贴板的使用,关于Graphics View框架的拖放操作也在本章。 212 \ 第8章 文件处理 蔡志明介绍了Qt的文件处理,包括基于流的文本文件和二进制文件处理,文件信息和目录操作,目录以及文件的变化监控,文件引擎的编写。 219 \ 第9章 网络 李立夏介绍了Qt的网络处理,包括编写常见的FTP、HTTP、UDP和TCP程序,以及访问底层网络接口信息和扩展Qt网络模块功能的方法。 227 \ 第10章 多线程 李立夏介绍了Qt的多线程处理,包括两方面内容:传统的线程操作,以及与Qt事件机制相关的操作。这一章还涉及较多的基本概念,并逐一做了介绍。 261 \ 第11章 事件机制 李立夏介绍了Qt的事件处理模型,详细介绍了在Qt程序设计中处理事件的五种方法,并讨论了如何利用Qt事件机制加快用户界面响应速度。 283 \ 第12章 数据库 李立夏介绍了Qt的数据库处理,重点介绍了如何在Qt中使用SQL语句进行数据库操作和如何利用QSqlTableModel这类高层次类进行常见的数据库编程。 297 \ 第13章 Qt的模板库和工具类 卢传富 \蔡志明 Qt提供了丰富的模板库和工具类,本章只是介绍了部分内容。在这一章,重点介绍了Qt的容器类、QString和QVariant类,简介了Qt的算法和Qt正则表达式的使用。 326 \ \ \续表 \篇章 章 名 作者 内 容 简 介 页码 \高级篇 第14章 XML 蔡志明对Qt中的三种XML解析方式(DOM、SAX和基于流的解析)进行了比较和举例。还讲解了如何使用API写XML文件。 348 \ 第15章 模型/视图结构 蔡志明阐述了Qt的模型/视图结构,分别对模型视图的三个组成部分(模型、视图和代理)进行了介绍,演示了如何自定义这些组成部分,并简要说明了拖放以及选中操作。 366 \ 第16章 高级绘图 蔡志明叙述了在Qt中如何使用OpenGL绘图,对基本的OpenGL绘图进行了讲解,介绍了矢量图型文件SVG的读写操作。 406 \ 第17章 进程间通信 李立夏 介绍进程和进程间通信的知识,重点介绍了Qt中桌面环境下基于D-Bus的多进程应用程序开发。 421 \ 第18章 Qt插件 蔡志明 说明了Qt的插件系统,并对Qt Designer插件、数据库插件、风格插件进行了较详细的介绍。 442 \ 第19章 脚本——QtScript 蔡志明 这是Qt 4.3中引入的最新内容,使得Qt能够支持ECMAScript脚本。本章简要地举例说明了在Qt中如何使用脚本,如何将C++对象暴露给脚本。 459 \ 第20章 国际化 骆艳 本章包括编码的处理,Qt Linguist的使用步骤,动态语言切换的内容。 468 \ 第21章 Qt单元测试框架 蔡志明 本章阐述了如何使用QTestLib框架进行数据测试、GUI测试。 478 \ 附录A~E 蔡志明附录中包括Qt在Linux、Windows、Solaris上的安装,KDevelop、Eclipse集成开发环境的使用,qmake的基本应用,Qt源代码分析举例,Qt资源。 485 \如何获取源代码 \由于Qt是跨平台的,因此书中的内容应用能够在Windows、Linux、UNIX和Mac OS上运行,书中的程序可能是在下列三种平台之一上编写:Windows XP/Vista、Linux(SuSE、Fedora Core或红旗)以及Solaris 10 SPARC/X86。因此书中的屏幕截图可能来源于其中的任何一种操作系统。
本书详细介绍了Qt的基础知识和GUI编程应用,举例翔实,内容全面,基本涵盖了Qt编程的各个方面。全书共分3篇21章,包括Qt GUI编程的基础知识(对话框、基础窗口部件、程序主窗口、布局管理),中级编程(2D绘图、拖放操作与剪贴板、文件处理、网络编程、多线程、事件机制、数据库以及Qt的模板库和工具类)和高级应用(XML应用、模型/视图结构、高级绘图、进程间通信、Qt插件和脚本应用)。同时,在相关章节也穿插了一些重要的知识点,包括元对象系统、属性系统、对象树机制、信号/槽机制等。 本书体系完整,内容实用,可以作为Qt初学者的入门进阶书籍,适合具有一定开发经验的Qt程序员作为参考书,也可以作为大中院校相关专业及培训机构的教材。 目录前言 初级篇 第1章 Qt初步实践 1.1 第一个Qt程序 1.2 使用Qt布局管理器 1.3 关联操作 1.4 小结 第2章 对话框——QDialog 2.1 自定义对话框 2.2 加入主程序 2.3 Qt内建(built-in)对话框 2.4 小结 第3章 基础窗口部件——QWidget 3.1 Qt设计器绘制窗口部件 3.2 程序中引入自定义窗口部件 3.3 Qt的信号和槽机制 3.4 窗口标志及几何布局 3.5 Qt样式表 3.6 Qt对象模型 3.7 小结 第4章 程序主窗口——QMainWindow 4.1 QMainWindow主窗口框架 4.2 Qt设计器绘制主窗口 4.3 代码创建主窗口 4.4 锚接部件 4.5 状态栏 4.6 实现文本编辑器功能 4.7 多文档 4.8 打印文档 4.9 小结 第5章 布局管理 5.1 Qt布局管理器——QLayout 5.2 分裂器部件Qsplitter 5.3 栈部件Qstackedwidget 5.4 工作空间部件QWorkspace 5.5 多文档区部件QMdiArea 5.6 小结 中级篇 第6章 2D绘图 第7章 拖放操作和剪贴机 第8章 文件处理 第9章 网络 第10章 多线程 第11章 事件处理 第12章 数据库 第13章 Qt的模板库和工具类 高级篇 第14章 XML 第15章 模型/视图结构 第16章 高级绘图 第17章 进程与进程间通信 第18章 Qt插件 第19章 脚本——QtScript 第20章 国际化 第21章 Qt单元测试框架 附录A Qt安装 附录B Qt集成开发环境 附录C qmake速查 附录D 深入Qt源代码
### 回答1: 如果要设置 AutoHotkey 默认新建脚本的路径,可以在 AutoHotkey 的安装目录中找到一个叫做 "AutoHotkey.ini" 的文件,然后在文件中添加一行 "DefaultSave=C:\path\to\your\folder"(注意需要使用双引号包含路径)。保存文件后重启 AutoHotkey,就可以在指定的文件夹中新建脚本了。 如果 AutoHotkey.ini 文件不存在,可以在 AutoHotkey 的安装目录中新建一个文本文件,并命名为 "AutoHotkey.ini",然后按照上述方法添加 "DefaultSave" 配置项即可。 注意,如果在 AutoHotkey.ini 中设置的路径不存在,AutoHotkey 会使用默认的路径,也就是安装目录中的 "Scripts" 文件夹。 ### 回答2: 要设置Autohotkey的默认新建脚本路径,可以按照以下步骤进行操作: 1. 首先,打开Autohotkey的安装文件夹。通常情况下,安装文件夹的路径是 "C:\Program Files\Autohotkey"。 2. 在安装文件夹中,找到"AutoHotkey.exe"可执行文件,并右键点击该文件,选择"发送到" -> "桌面(快捷方式)",以创建一个快捷方式到桌面。 3. 在桌面上,右键点击这个新创建的快捷方式,并选择"属性"。 4. 在属性对话框中,找到"目标"字段。在该字段的结尾处添加一个空格和以下文本:"-f path\to\default.ahk"(注意将"path\to\default.ahk"替换为你想要作为默认新建脚本路径的文件路径)。 5. 单击"应用"或"确定"按钮来保存更改。 现在,当你双击这个快捷方式来启动Autohotkey时,它将使用你指定的脚本路径作为默认新建脚本路径。如果你想要创建一个新的脚本,只需在你设置的默认文件路径处新建一个文本文件,将其重命名为以".ahk"为扩展名的文件,并开始编辑你的脚本。 ### 回答3: 要设置AutoHotkey的默认新建脚本路径,您可以按照以下步骤进行设置: 1. 首先,确保您已经安装了AutoHotkey软件。如果没有安装,您可以从官方网站下载并安装。 2. 找到AutoHotkey的安装目录。通常情况下,在C盘的"Program Files"文件夹中可以找到AutoHotkey的安装文件夹。 3. 进入AutoHotkey的安装文件夹,找到名为"AutoHotkey.ahk"的文件。这是AutoHotkey的默认脚本。 4. 右击"AutoHotkey.ahk"文件,选择"属性"选项。 5. 在属性窗口中,点击"快捷方式"选项卡。 6. 在"目标"文本框中,找到末尾的"AutoHotkey.ahk"并将其替换为您想要的新建脚本路径,例如:"D:\新建脚本.ahk"。确保您输入的路径是正确的。 7. 确认更改后,点击"应用"按钮并关闭属性窗口。 现在,当您双击AutoHotkey软件运行时,它将自动在新建脚本路径中创建一个新的脚本文件。请注意,您需要确保您输入的路径是存在的,否则可能会发生错误

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值