posts - 319, comments - 22, trackbacks - 0, articles - 11
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

posted @ 2011-06-03 07:25 RTY 阅读(972) | 评论 (0)编辑 收藏

posted @ 2011-06-03 06:37 RTY 阅读(396) | 评论 (0)编辑 收藏

文本编辑器Emurasoft EmEditor Professional V10.0.6 +注册码

Emurasoft EmEditor Professional多国语言含简体中文版。EmEditor是快速,轻巧,可扩展,使用方便的windows文本编辑器。EmEditor获得了众多奖励,包括 共享软件企业殊荣 ,该荣誉在应用程序领域! ZDnet.com的 Ed Burnette 称 EmEditor 为 “全球最快的编辑器。” 

该文本编辑器支持功能强大的宏,统一码,超大文件。Emurasoft的随时服务满足了客户的需要,并随时倾听客户的建议。我们提供及时的客户服务, 并为有一些知名客户而骄傲,这些知名客户包括:大型企业,教育机构,欧盟组织,日本及其他各国的政府部门。
EmEditor Professional 特征
文件对比, 拼写验证, 更多特征尽在版本10中
这个版本中的众多新特征包括: 新的对比和同步滚动功能, 新的拼写特征, 改进后的垂直选区编辑功能, 大纲插件新特征, 以及更多! 详见 EmEditor 专业版 10 新特征.
新特征列表
对比和同步滚动 • 新的拼写功能 • 改进后的垂直选区编辑 • 计数 • 大纲插件新特征 • ASCII并排查看和二进制(十六位制查看) • 新的代码片段插件 • 自动添加括弧 • 收缩 • CSV, TSV • 全屏 • 剪贴板历史 • 支持通配符 • 包括取消信息的工作区 • 新的外部工具 • 列表引脚 • 保存在受保护的文件夹中 • 支持 Windows 7 跳转列表 • 超大文件编辑器 • 垂直选区编辑 • 二位制编辑 • 最优化搜索和重启 • 改进后的项目插件 • 最优化开启的超大文件 • 搜索栏, HTML栏, 项目插件 • Word Complete • 键盘和鼠标记录和返回 • 针对宏的新对象, 属性, 和方法 • Macros工具栏 • 移动选项 (可安装在U盘) • 浏览器, 差分计数器, 大纲, 网页预览, 搜索插件 • 联合EmEditor的外部工具标准输出显示 • 快速启动 • 支持活动脚本 • 轻巧, 单一程序, 多线程, 低耗内存 • 制表视窗 • 检查所有结果的对话框 • 支持更多统一码 • 应用程序出错处理 • 强大而多功能的宏 • 文件中查找 • 文件中重启 • 高亮显示关键字 • 支持统一码 • 插件 • 拖拽 • 优质 • 针对网页设计者 • 以及更多! 
Snap_2011.04.17_19h37m18s_001.png
Emurasoft EmEditor Professional官方网站:
http://www.emeditor.com
Emurasoft EmEditor Professional V10.0.6官方下载地址:
http://www.emeditor.com/pub/emed32_10.0.6_trial.exe
Emurasoft EmEditor Professional V10.0.6官方注册码:

名字:www.yyyww.com
注册码:ATEAM-CRUDE-FJJ29-C65AG-NC8ZB

posted @ 2011-06-02 07:09 RTY 阅读(1005) | 评论 (0)编辑 收藏

在这里我们提及一些Qt程序的调试的使用.
一、命令行选项
当你运行Qt程序的的时候你可以指定几个命令行选项来帮助程序的调试.
-nograb 应用程序不会抢夺鼠标和键盘. 当程序运行在Linux下的gdb调试工具下的时候,这个值是默认设置的.
-dograb 忽略任何暗示的或明示的-nograb. 即使-nograb放在命令行的最后时,-dograb也胜于-nograb的调用,即-dograb的优先级更高.
-sync 应用程序在X的同步模式下运行. 同步模式强制X服务器立即执行每个X客户端的请求并且不使用缓冲区(buffer)的优化. 它使程序更便于调试,但是速度更慢.-sync选项仅在Qt的X11版本上有效.
二、警告和调试信息
Qt的拥有本个全局函数来输出警告及调试文本.
qDebug() 用于测试等的调试信息的输出.
qWarning() 用于当程序出现错误的时候的警告信息的输出.
qFatal() 用于毁灭性的错误信息的输出及程序的退出.
Qt 通过这些函数的执行将信息传给Unix/X11下的stderr output或传给Windows下的调试器. 你可以通过qInstallMsgHandler()安装信息句柄(message handler)来接管这些函数.
当一个应用程序很奇怪地运行时,调试函数QObject::dumpObjectTree() 和QObject::dumpObjectInfo() 是很有用的. 用对象名比不用对象名更有帮助,虽然有的时候不用名称都是那么有帮助.
三、调试宏
头文件qglobal.h包含了许多的调试宏及其定义.
两个重要的宏:
ASSERT(b) 其中b 是一个布尔表达式, 如果b的FALSE,将会输出警告信息: "ASSERT: 'b' in file file.cpp (234)" ---->表示在文件file.cpp的第234行中b的值为FALSE. 
CHECK_PTR(p) 其中p 是一个指针. 当p为空的时候将会输出警告信息: "In file file.cpp, line 234: Out of memory" ---->表示在文件file.cpp的第234行,内存溢出. 
这些宏在检测程序错误时是非常有用的, 比如说:
  char *alloc( int size )
  {
      ASSERT( size > 0 );
      char *p = new char[size];
      CHECK_PTR( p );
      return p;
  }
如果你定义了标志QT_FATAL_ASSERT, ASSERT将会调用fatal()取代warning(), 所以一个失败的断言将会导致程序在输出错误信息后退出.
注意:如果CHECK_STATE(下面会讲到)没有定义的话,那么ASSERT宏是一个空的表达式. 在它里头的代码将不会被执行. 同样的,如果CHECK_NULL没有定变色镜的话,CHECK_PTR也是一个空的表达式. 这里是一个怎样让ASSERT 或CHECK_PTR成为NOT的例子:
  char *alloc( int size )
  {
      char *p;
      CHECK_PTR( p = new char[size] );  // never do this!
      return p;
  }
这个程序的繁杂的:只有在正确检测试标志被定义的时候, p 才会被设为一个稳当的值. 如果这个代码没有定义CHECK_NULL标志, 那么在CHECK_PTR表达式里的代码将不会执行(一般地,它只是帮助调试) 并返回一个野指指.
Qt库包含了几百条内在的检测,当有一些错误被检测出来之后,将会输出警告信息.
基于下列不同调试标志的状态,可以进行对Qt内部的完整性和结果的正确性的测试:
CHECK_STATE: 检查对象的状态的一致性.Check for consistent/expected object state 
CHECK_RANGE: 检查变量的范围错误. 
CHECK_NULL: 检查危险的空指针.
CHECK_MATH: 检查危险的数学运算, 比如说除以0的运算. 
NO_CHECK: 关闭所有的CHECK_... 标志 .
DEBUG: 允许使用调试代码.
NO_DEBUG: 关闭 DEBUG 标志. 
默认情况下, DEBUG和所有的CHECK 标志都是打开的. 要关闭 DEBUG, 定义NO_DEBUG. 要关闭CHECK标志,定义 NO_CHECK.
例:
  void f( char *p, int i )
  {
  #if defined(CHECK_NULL)
      if ( p == 0 )
          qWarning( "f: Null pointer not allowed" );
  #endif
  #if defined(CHECK_RANGE)
      if ( i < 0 )
          qWarning( "f: The index cannot be negative" );
  #endif
  }
四、一般的bugs
这里我们值得提及的一个公共的BUG: 如果你包含了一个Q_OBJECT宏在类的声明和运行moc的时候, 并且又忘了链接到moc生成对象代码到你的可执行程序上,那么你将会得到一些非常模糊的错误信息. 
任何链接错误信息都是关于vtbl, _vtbl, __vtbl 或类似于这样一类问题缺乏的提示信息. 

posted @ 2011-06-01 21:46 RTY 阅读(528) | 评论 (0)编辑 收藏

先要说的是QString。
      之所以把QString单独拿出来,是因为string是很常用的一个数据结构,甚至在很多语言中,比如JavaScript,都是把string作为一种同int等一样的基本数据结构来实现的。
      每一个GUI程序都需要string,这些string可以用在界面上的提示语,也可以用作一般的数据结构。C++语言提供了两种字符串的实现:C风格的 字符串,以'\0‘结尾;std::string,即标准模版库中的类。Qt则提供了自己的字符串实现:QString。QString以16位 Uniode进行编码。我们平常用的ASCII等一些编码集都作为Unicode编码的子集提供。关于编码的问题,我们会到以后的时候再详细说明。
在使用QString的时候,我们不需要担心内存分配以及关于'\0'结尾的这些注意事项。QString会把这些问题解决。通常,你可以把 QString看作是一个QChar的向量。另外,与C风格的字符串不同,QString中间是可以包含'\0'符号的,而length()函数则会返回 整个字符串的长度,而不仅仅是从开始到'\0'的长度。
     同Java的String类类似,QString也重载的+和+=运算符。这两个运算符可以把两个字符串连接到一起,正像Java里面的操作一样。QString可以自动的对占用内存空间进行扩充,这种连接操作是恨迅速的。下面是这两个操作符的使用:
QString str = "User: "  ;  
str += userName + "\n"  ; 
QString的append()函数则提供了类似的操作,例如:
str = "User: "  ;  
str.append(userName);  
str.append("\n"  ); 
C语言中有printf()函数作为格式化输出,QString则提供了一个sprintf()函数实现了相同的功能:
str.sprintf("%s %.1f%%"  , "perfect competition"  , 100.0); 
这句代码将输出:perfect competition 100.0%,同C语言的printf()一样。不过前面我们也见到了Qt提供的另一种格式化字符串输出的函数arg():
str = QString("%1 %2 (%3s-%4s)"  )  
      .arg("permissive"  ).arg("society"  ).arg(1950).arg(1970); 
这段代码中,%1, %2, %3, %4作为占位符,将被后面的arg()函数中的内容依次替换,比如%1将被替换成permissive,%2将被替换成society,%3将被替换成 1950,%4将被替换曾1970,最后,这句代码输出为:permissive society (1950s-1970s). arg()函数比起sprintf()来是类型安全的,同时它也接受多种的数据类型作为参数,因此建议使用arg()函数而不是传统的 sprintf()。
使用static的函数number()可以把数字转换成字符串。例如:
QString str = QString::number(54.3); 
你也可以使用非static函数setNum()来实现相同的目的:
QString str;  
str.setNum(54.3); 
而一系列的to函数则可以将字符串转换成其他基本类型,例如toInt(), toDouble(), toLong()等。这些函数都接受一个bool指针作为参数,函数结束之后将根据是否转换成功设置为true或者false:
bool    ok;  
double    d = str.toDouble(&ok);  
if   (ok)  
{  
    // do something...   
} else    {  
    // do something...   
对于QString,Qt提供了很多操作函数,例如,使用mid()函数截取子串:
QString x   = "Nine pineapples"  ;  
QString y   = x  .mid(5, 4);            // y   == "pine"  
QString z   = x  .mid(5);               // z   == "pineapples" 
mid()函数接受两个参数,第一个是起始位置,第二个是取串的长度。如果省略第二个参数,则会从起始位置截取到末尾。正如上面的例子显示的那样。
函数left()和rigt()类似,都接受一个int类型的参数n,都是对字符串进行截取。不同之处在于,left()函数从左侧截取n个字符,而right()从右侧开始截取。下面是left()的例子:
QString x = "Pineapple"  ;  
QString y = x.left(4);      // y == "Pine"   
函数indexOf()返回字符串的位置,如:
QString x = "sticky question"  ;  
QString y = "sti"  ;  
x.indexOf(y);               // returns 0   
x.indexOf(y, 1);            // returns 10   
x.indexOf(y, 10);           // returns 10   
x.indexOf(y, 11);           // returns -1   
函数startsWith()和endsWith()可以检测字符串是不是以某个特定的串开始或结尾,例如:
if    (url.startsWith("http:"  ) && url.endsWith(".png"  ))  
{  
这段代码等价于
if    (url.left(5) == "http:"   && url.right(4) == ".png"  )  
{  
不过,前者要比后者更加清楚简洁,并且性能也更快一些。
QString还提供了replace()函数供实现字符串的替换功能;trimmed()函数去除字符串两侧的空白字符(注意,空白字符包括空 格、Tab以及换行符,而不仅仅是空格);toLower()和toUpper()函数会将字符串转换成小写大写字符串;remove()和 insert()函数提供了删除和插入字符串的能力;simplified()函数可以将串中的所有连续的空白字符替换成一个,并且把两端的空白字符去 除,例如"   \t   ”会返回一个空格" "。
将const char *类型的C风格字符串转换成QString也是很常见的需求,简单来说,QString的+=即可完成这个功能:
str += " (1870)"  ; 
这里,我们将const char * 类型的字符串" (1870)"转换成为QString类型。如果需要显式的转换,可以使用QString的强制转换操作,或者是使用函数fromAscii()等。为了 将QString类型转成const char *字符串,需要进行两步操作,一是使用toAscii()获得一个QByteArray类型对象,然后调用它的data()或者constData()函 数,例如:
printf("User: %s\n"  , str.toAscii().data()); 
为了方便使用,Qt提供了一个宏qPrintable(),这个宏等价于toAscii().constData(),例如:
printf("User: %s\n"  , qPrintable(str)); 
我们调用QByteArray类上面的data()或者constData()函数,将获得QByteArray内部的一个const char*类型的字符串,因此,我们不需要担心内存泄漏等的问题,Qt会替我们管理好内存。不过这也暗示我们,注意不要使用这个指针太长时间,因为如果 QByteArray被delete,那么这个指针也就成为野指针了。如果这个QByteArray对象没有被放在一个变量中,那么当语句结束 后,QbyteArray对象就会被delete,这个指针也就被delete 了。
接下来说说QString和QByteArray之间的转换  ,这里说两种,都是从网上搜到的。
第一种,数据流的方式,这里只说从QByteArray转向QString。
QByteArray encodedString = "xxx";
QTextCodec *codec = QTextCodec::codecForName("KOI8-R");
QString string = codec->toUnicode(encodedString);
[另外]
char ch_str[10] = "搜索";
QString str = QString::fromLocal8Bit(ch_str);
第二种,常用的,网上看到的。
//常用参数类型:char *字符串, QByteArray字符数组, QString字符串
//需要转换:char * ---转---  QByteArray  ---需要调用QByteArray类的构造函数
char*     --------------QByteArray(const char*)-----------> QByteArray
char* str;
QByteArray byte(str);
char*     --------------QString(const char*)-------------->QString
char* str;
QString string(str);
QByteArray   -------------data()-------------------->char*
QByteArray byte;
char* str = byte.data();
QByteArray  ------------QString()------------------->QString
QByteArray byte;
QString string(byte);
QString  --------------toAscii()--------------------> QByteArray
QString string;
QByteArray byte = string.toAscii();
QString -------------qPrintable()------------------>char*
QString string;
char* str = qPrintable(string);
或QString --------toLatin1()------QByteArray----------data()--------->char*
QString string;
QByteArray ba=string.toLatin1();
const char* str = ba.data();

posted @ 2011-06-01 21:42 RTY 阅读(1315) | 评论 (0)编辑 收藏

一. 背景刷成黑色,前景色设为白色。 
      方法一、paltette方式,经测试,该方法不会影响到其他控件,推荐使用 QPalette bgpal = palette();
                    bgpal.setColor (QPalette::Background, QColor (0, 0 , 0, 255));
                     //bgpal.setColor (QPalette::Background, Qt::transparent);
                     bgpal.setColor (QPalette::Foreground, QColor (255,255,255,255)); setPalette                                      (bgpal);
      方法二、stylesheet方式 影响子控件的方法是:
                    setStyleSheet ("background-color: #000000;color: #ffffff;");
      不影响子控件的方法是:
                    setStyleSheet ("venus--TitleBar {background-color: #000000;color:                                                    #ffffff;}");
二. 圆角控件 用stylesheet方式
      setStyleSheet ("border:2px groove gray;border-radius:10px;padding:2px 4px;");
三. 圆角窗口 
      RoundRectWin::RoundRectWin() { QPalette p = palette(); QPixmap img("roundrect.png");
      QBitmap mask("roundrect_mask.png");
      p.setBrush(QPalette::Window, QBrush(img));
      setPalette(p);
      setMask(mask);
      resize(img.size());
      //setWindowFlags(Qt::FramelessWindowHint);//这句会去掉标题栏 } 注意:mask的图多余部分设为             白色
四. 半透明窗口
     1.窗口整体透明,但是窗体上的控件不透明。 通过设置窗体的背景色来实现,将背景色设置为全透。                      QPalette pal = palette();
         pal.setColor(QPalette::Background, QColor(0x00,0xff,0x00,0x00)); setPalette(pal); 试验效                  果:
         窗体标题栏不透明;
         窗体客户区上的控件不透明,QLabel控件只是字显示,控件背景色透明; 窗体客户区完全透明。
         另外从网上看到的方法: setAttribute(Qt::WA_TranslucentBackground, true); 试验的结果是类                似于上面的方法,但有时候窗体会被一些杂色斑点填充,未找到原因。
     2.窗口及其上面的控件都半透明:
        setWindowOpacity(0.7)
         试验效果:窗口及控件都半透明。注意不能够setWindowFlags(Qt::FramelessWindowHint);要不                 就不起作用
    3.窗口整体不透明,局部透明:
        在Paint事件中使用Clear模式绘图。
        void TestWindow::paintEvent( QPaintEvent* )
        { 
               QPainter p(this);
               p.setCompositionMode( QPainter::CompositionMode_Clear ); p.fillRect( 10, 10, 300,                          300, Qt::SolidPattern ); 
          }
        试验效果:绘制区域全透明。如果绘制区域有控件不会影响控件。
         以上实验均是基于Directfb的Qte测试。在Linux下及Windows下效果会略有不同。 比如在Windows                下第3个实验,绘制区域就是一个黑窟窿,如果Window本身半透,则是Window下面的内容加上半透                  效果,不是全透明效果。
五. 控制QPixmap的alpha
      QPixmap temp(pixmapTop.size()); temp.fill(Qt::transparent);
      QPainter p(&temp);
      p.setCompositionMode(QPainter::CompositionMode_Source);
      p.drawPixmap(0, 0, pixmapTop);
      p.setCompositionMode(QPainter::CompositionMode_DestinationIn);
      p.fillRect(temp.rect(), QColor(0, 0, 0, alpha)); //--lable显示前景图片 ui->label-                                         >setScaledContents(true);
      ui->label->setPixmap(temp);
六. layout 的边界 layout->setMargin (0);
七.QPushButton的三种状态
 
QString strStyle = "QPushButton {border-image: normal.png;} QPushButton: hover{border-image: hover.png;} QPushButton: checked {border-image: check.png;}";
button->setStyleSheet(strStyle);

posted @ 2011-06-01 21:36 RTY 阅读(1026) | 评论 (0)编辑 收藏

Python中的easy_install

Python中的easy_install工具很爽,它的作用类似于Php中的pear,或者Ruby中的gem,或者Perl中的cpan。

如果想使用easy_install工具,可能需要先安装setuptools,不过更酷的方法是使用ez_setup.py脚本:

wget -q http://peak.telecommunity.com/dist/ez_setup.py
python ez_setup.py

安装完后,最好确保easy_install所在目录已经被加到PATH环境变量里:

Windows: C:\Python25\Scripts
Linux: /usr/local/bin

比如说要安装Python的MySQL支持,可以执行如下命令,系统会自动在pypi网站列表里查找相关软件包:

easy_install MySQL-python

如果你在Windows+python2.5上执行如上命令的话,可能会出现如下错误:

Processing MySQL-python-1.2.3c1.tar.gz
Running MySQL-python-1.2.3c1\setup.py -q bdist_egg –dist-dir c:\docume~1\…
\locals~1\temp\easy_install-fvvfve\MySQL-python-1.2.3c1\egg-dist-tmp-q9moxf
error: The system cannot find the file specified

出现这类错误的原因是选错了版本,针对这个案列,我们可以显式指定软件包的版本号:

easy_install “MySQL-python==1.2.2″

通过easy_install安装软件,相关安装信息会保存到easy-install.pth文件里,路径类似如下形式:

Windows:C:\Python25\Lib\site-packages\easy-install.pth
Linux:/usr/local/lib/python25/site-packages/easy-install.pth

如果想删除通过easy_install安装的软件包,比如说:MySQL-python,可以执行命令:

easy_install -m MySQL-python

此操作会从easy-install.pth文件里把MySQL-python的相关信息抹去,剩下的egg文件,你可以手动删除。

参考:http://www.ibm.com/developerworks/cn/linux/l-cppeak3.html

posted @ 2011-06-01 06:51 RTY 阅读(360) | 评论 (0)编辑 收藏

该版本修复了 SQLiteConnection 在语法上的不兼容导致 Python 2.4 无法使用 SQLObject 的问题。

SQLObject 是一个流行的Python 数据库对象映射框架,映射的规则就是表->类、字段->属性

示例代码:

>>> from sqlobject import *
>>>
>>> sqlhub.processConnection = connectionForURI('sqlite:/:memory:')
>>>
>>> class Person(SQLObject):
... fname = StringCol()
... mi = StringCol(length=1, default=None)
... lname = StringCol()
...
>>> Person.createTable()

posted @ 2011-05-31 07:12 RTY 阅读(204) | 评论 (0)编辑 收藏

     摘要: 请点击表格中属性列的链接,可以查看相关属性的详细信息。CSS 属性组:背景文本字体边框和轮廓外边距内边距列表内容生成尺寸定位打印表格伪类伪元素提示和注释:属性:“属性” 列指向语法、实例、浏览器支持等内容。CSS:"CSS" 列指示属性是在哪个 CSS 版本中定义的(CSS1 还是 CSS2)。提示:W3School 的 CSS 参考手册定期在所有主流浏览器中进行测试。最后...  阅读全文

posted @ 2011-05-28 21:26 RTY 阅读(216) | 评论 (0)编辑 收藏

打印属性

打印 HTML 文档总是会出现问题。在 CSS2 中,我们可以借助打印属性让打印 web 内容更容易一些。

属性描述
orphans设置元素放在页面底部时所允许的最少文本行数。number
marks

设置是否在内容区之外但是在画布的可打印区域内放“十字标志”。

请注意,CSS2.1 已删除该属性。

  • none
  • crop
  • cross
page

这个属性与 size 属性结合可以指定打印一个元素时所用的特定页面类型。

请注意,CSS2.1 已删除该属性。

auto identifier
page-break-after设置元素后是否应当放置分页符。
  • auto
  • always
  • avoid
  • left
  • right
page-break-before设置元素前否应当放置分页符。
  • auto
  • always
  • avoid
  • left
  • right
page-break-inside设置元素内部是否应当放置分页符。
  • auto
  • avoid
size

利用这个属性,创作人员可以声明打印一个元素时所用页框的大小和方向。它可以与 page 结合使用。不过并不要求一定如此。

请注意,CSS2.1 已删除该属性。

  • auto
  • portrait
  • landscape
widows设置元素放在页面顶部时所允许的最少文本行数。number

posted @ 2011-05-28 21:25 RTY 阅读(141) | 评论 (0)编辑 收藏

仅列出标题
共31页: First 15 16 17 18 19 20 21 22 23 Last