2006年02月23日

http://blog.donews.com/Yolanda/archive/2005/01/12/236605.aspx
不知道这段话在说什么

#include QString locate("data",QString("amarok/images"));
可以返回amarok安装目录的绝对路径 /opt/kde3/share/apps/amarok/images
Qt QPalette QColorGroup
真是奇怪阿,Disabled状态竟然调的是QColorGroup::Text,让我猜了好久。
Qt setPaletteBackgroundPixmap();
可以使窗体擦除时无闪动重载
QPushButton::drawButton(QPainter *p);
QPushButton::paintEvent(QPainEvent *event);
可以加速画button的速度例如:
void CSkinButton::paintEvent(QPaintEvent * e)
 //It is this function that make the repaint very quick,why??? I don’t know very well.
{
 if(toggleType() == QButton::Toggle)
 {
  //QSharedDoubleBuffer buffer( this );
  drawButton( & QPainter(this) );
  //This is very important , maybe it make the area small
 }
}

void CSkinButton::drawButton(QPainter * painter)
{
 if(isEnabled())
 {
  if(toggleType() == QButton::SingleShot)
  {
   painter->drawPixmap(0,0,*m_item->m_normalImage);
  }
   else if(toggleType() == QButton::Toggle)
   {
    if(state() == QButton::On)
    {
     //setPaletteBackgroundPixmap(*m_item->m_activeImage);
     painter->drawPixmap(0,0,*m_item->m_activeImage);
    }
    else
    {
     //setPaletteBackgroundPixmap(*m_item->m_normalImage);
     painter->drawPixmap(0,0,*m_item->m_normalImage);
    }
   }
 }
  else
  {
   painter->drawPixmap(0,0,*m_item->m_disabledImage);
  }
}
      
 用小图来填充大图
 QPixmap mLabPix2("/root/mywork/qtapps/test/images/label2.png");
 QPixmap mLabBigPix(1000,mFancyLab->height());
 int i;
 int widthBig = 1000;
 //width()-mFancyLab->width();
 int widthSml = mLabPix2.width();
 for(i = 0 ; i < widthBig; i+=widthSml)
 {
  copyBlt(&mLabBigPix, i, 0, &mLabPix2, 0, 0,widthSml, mFancyLab->height() );
 }
 if(mLabPix2.isNull())
 {
  qWarning("Can’t find the pixmap for fancy label");
 }
 else
 {
  mExtLab->setPixmap(mLabBigPix);
 }
   
     QMainWindow::addDockWindow ( QDockWindow * dockWindow, Dock edge = DockTop, bool newLine = FALSE ) ;
     添加布局,组件在QMainWiddow

2006年02月21日

昨天编译了makeqpf,但是不知道怎么用。还需要测试。

今天调试 keyevent,同时也加深了对qmake和qws的理解。

小王、叶子、老大还有我,四位夫人,不容易啊。快11年了!

2006年2月19号

2006年02月17日

昨天搞了一下午,今天早上一来就搞定了。

2006年02月12日

唉,我又不懂得多少中国传统文化。

父亲:杨
母亲:张
女儿:
公历:2006年02月01日(星期三)12点10分
农历:丙戌年正月初四日午时
春节:1月29日
节前:乙酉年
节后:丙戌年
八字:丙戌 庚寅 辛酉 甲午
五行:火土 金木 金金 木火
方位:南中 西东 西西 东南
生肖:狗

2006年02月09日

其实改编的过程还是很简单的。终于可以自由定制Qtopia界面了,八字开始写了。

今天碰到了这个问题,终于被我google到了:
http://www.cublog.cn/opera/showart.php?blogid=8650&id=49526
原因:qmake不会处理.cpp文件里的Q_OBJECT,所以,如果在.cpp文件中有它的话,也会产生undefined reference to vtable for "xxx::xxx". 这时,需要先用moc xxxx.cpp生成相应的moc文件,再包含到.cpp里面去,才能解决这个问题.
其他:
1.问题: QGLViewer中的函数不能正常link.解决: 翻看其源代码,发现是因为从源码安装libQGLViewer时,编译用了Qt 3,而我的程序中用Qt4 编译.所以必须重新用Qt4编译.但是,更改QTDIR 环境变量为Qt4后,重新编译的话,qmake生成makefile时就提示出错.进一步发现,是因为虽然设了QTDIR为Qt4,头文件和库文件都会使用Qt4,但是moc,uic等都是用的qt3版的,再把PATH环境变量改动后,一切ok.
2.问题:某一个类中如果加入Q_OBJECT后,则link时提示:undefined reference to vtable for "xxx::xxx".删掉它则没有任何问题.解决:尝试(1):把所有的obj文件和uic文件删除,重新编译.仍然失败.去trolltech的mail lists找到原因: 因为qmake生成Makefile的时候,这个类的头文件中并没有Q_OBJECT,所以在相应的Makefile里面并没有用moc xxx.h命令,最终导致链接失败.重新运行qmake,问题解决.在查找解决方法的时候,附带发现一点:qmake不会处理.cpp文件里的Q_OBJECT,所以,如果在.cpp文件中有它的话,也会产生undefined reference to vtable for "xxx::xxx". 这时,需要先用moc xxxx.cpp生成相应的moc文件,再包含到.cpp里面去,才能解决这个问题.
3. 看Qt的reference发现: 可以connect(pObjA, SIGNAL(someSignalA()),pObjB,SIGNAL(someSignalB()));这样pObjA发出的someSingalA会导致pObjB发出someSignalB,从而形成信号接力.

2006年02月08日

qt2/examples/hello是可以编译过去的,但是其他的 example 却无论如何也编译不了,应该是configure或环境没有设置好吧。先放放再说。(qtopia2.2.0)

昨天&今天看了看 Qtopia 的 Launcher,感觉摸到门了。
ServerInterface -Launcher-LauncherTab-LauncherView-LauncherViewIcon,

想去掉中间的 LauncherTab,直接启动一个 LauncherView。

改造Launcher的思路应该就在这个过程中了。


     昨天和今天都很冷,因为有风。不过太阳格外的好,而且万里无云。
     昨天的雪都没有冻上,路上也没有冰,也许因为风大。今天晚上很早就结冰了。冷啊。

2006年02月06日

    雪不大,灰颜色的,一点都不白。
    倒是冷了不少。