日本热海温泉酒店推荐:qt问题收集

来源:百度文库 编辑:偶看新闻 时间:2024/04/25 16:11:28

http://wqly2036.blog.163.com/blog/static/131524138200910622616436/

1.QT文档资料

void QWidget::paintEvent ( QPaintEvent * ) [virtual protected]

This event handler can be reimplemented in a subclass to receive paint events.

A paint event is a request to repaint all orpart of the widget. It can happen as a result of repaint() or update(),or because the widget was obscured and has now been uncovered, or formany other reasons.

Many widgets can simply repaint their entire surface when asked to, but some slow widgets need to optimize by painting onlythe requested region: QPaintEvent::region(). This speed optimizationdoes not change the result, as painting is clipped to that region duringevent processing. QListView and QCanvas do this, for example.

Qt also tries to speed up painting by merging multiple paint events into one. When update() is called several times or the window system sends several paint events, Qt merges these events into oneevent with a larger region (see QRegion::unite()). repaint() does notpermit this optimization, so we suggest using update() when possible.

When the paint event occurs, the updateregion has normally been erased, so that you're painting on the widget'sbackground. There are a couple of exceptions and QPaintEvent::erased()tells you whether the widget has been erased or not.

The background can be set usingsetBackgroundMode(), setPaletteBackgroundColor() orsetBackgroundPixmap(). The documentation for setBackgroundMode()elaborates on the background; we recommend reading it.

See also event(), repaint(), update(), QPainter, QPixmap, and QPaintEvent.

Examples: drawlines/connect.cpp,forever/forever.cpp, qmag/qmag.cpp, scribble/scribble.cpp,splitter/splitter.cpp, t8/cannon.cpp, and t9/cannon.cpp.

Reimplemented in QButton, QFrame, QGLWidget, QSizeGrip, QStatusBar, and QTabBar.

2.【提问】paintEvent引发的问题

我用KDevelop自动生成一个KDE的application framework的工程

看到了app view这两个类

我重写了view 的paintEvent,可是并没有重绘

我重写了app的paintEvent发现这里执行了~~于是我在这里又m_view->update();(我看文档说这个函数可以产生paint这个事件),还是失败

 

问题

1 paintEvent的概念与MFC中ondraw一样吗?(前者响应paint这个事件,后者响应WM_PAINT这个事件)

2 为什么view的paintEvent不执行?该如何?

3 信号与槽 Event与Event的处理函数 为什么要有两组?任何一种都足够(我是这么想的)

 

先谢谢

3.void QWidget::update () [槽]

更新窗口部件,除非更新已经失效或者窗口部件被隐藏。

这个函数不会导致一个立刻的重新绘制——更正确的是,当Qt回到主事件回路中时,它规划了所要处理的绘制事件。这样允许Qt来优化得到比调用repaint()更快的速度和更少的闪烁。

 

几次调用update()的结果通常仅仅是一次paintEvent()调用。

 

Qt通常在paintEvent()调用之前擦除这个窗口部件的区域。仅仅只有在WRepaintNoErase窗口部件标记被设置的时候,窗口部件本身对绘制它所有的像素负有责任。

 

 

 

void QWidget::repaint ( int x, int y, int w, int h, bool erase = TRUE ) [槽]

通过立即调用paintEvent()来直接重新绘制窗口部件,除非更新是失效的或者窗口部件被隐藏。

 

如果erase为真,Qt在paintEvent()调用之前擦除区域(x,y,w,h)。

 

如果w是负数,它被width()-x替换,并且如果h是负数,它被height()-y替换。

 

如果你需要立即重新绘制,我们建议使用repaint(),比如在动画期间。在绝大多数情况下,update()更好,因为它允许Qt来优化速度并且防止闪烁。

 

警告:如果你在一个函数中调用repaint(),而它自己又被paintEvent()调用,你也许会看到无线循环。update()函数从来不会产生循环。

4.我要在自己建的窗口中显示从服务器下载的图片,显示部分我自己建了一个类ImageViewer,从服务器上获取图片都已经成功,但是显示就是不出来.下面是我的ImageViewer的定义,我会在另外一个类中调用它,也就是在我下载完毕后调用ImageViewer中的openImage来显示,但是根据我的调试结果来看,程序无法进入ImageViewer类中的paintEvent函数,所以导致无法显示,我在QT的帮助文档中查找出来每次调用repaint()函数的时候就可以直接进入paintEvent函数,但是我为什么调用了repaint()就不能进入,如果有大侠知道望告之应该怎么样才能正确调用啊,请各位大侠帮小弟解决一下,万分感谢.特奉上100分作为感谢:)

 

class ImageViewer : public QWidget

{

    Q_OBJECT

 

public :

          ImageViewer(QWidget *parent=0, const char *name = 0);

bool openImage(const QString &fileName);

protected :

          void paintEvent(QPaintEvent *);

private:

    bool  modified;

    QImage *image;

};

 

ImageViewer :: ImageViewer(QWidget *parent, const char *name) : QWidget(parent, name) //Inherit QDialog

{       

modified = false;

}

 

bool  ImageViewer::openImage(const QString &fileName)

{

        QImage *loadedImage = new QImage;

        if (!loadedImage->load(fileName))

    return false;

        image = loadedImage;

        modified = false;

        repaint();

        return true;

}

 

 

void ImageViewer::paintEvent(QPaintEvent *)

    {

    QPainter painter(this);

    painter.drawImage(QPoint(0, 0), *image);

    }

 

调用的时候的程序段为

 

imaViewer = new ImageViewer(this);

imaViewer->openImage("image1.jpg");

delete imaViewer;

imaViewer = 0;

5.Qt 4计划在05年第二季度晚发行,现在已经有Beta 2版出来供测试,Beta 2也是最后的一个测试版。Qt 4的几个改进:

 

1. Qt3向Qt4的移植工作(这当然要做的,是Qt4必须要做的,其实对用户来讲,如果不需要专门的移植则更好。不算改进)

 

2. Qt Designer差不多重写了,增加了对MDI/SDI模式开发的支持,和对定制widget的更好的支持

2.1 新QT Designer里提供了开发几种模式,如Form Editing Mode;Singal and Slot Editing Mode;Buddy Editing Mode,和Tab Order Mode

2.2 对custom widget的支持更好

(但好象提到designer仅做ui,要去掉project editor和coder editor部分)

 

3. 设计了一个新的painting system

4. 改进的输入方法框架

5. 对XP和Motif风格的改进

 

6. 增加了一些新类,如Tulip(模板容量类)、Interview(为item提供model/view框架)、Arthur(新的paiting框架)、Scribe(Unicode文本支持),以及MainWindow(更好的基于action的主窗口)

7. 与Qt 3相比,Qt4库分割成几个小库,比如QtCore、QtGui、QtNetwork、QtOpenGL、QtSql、QtXml、Qt3Support等。这样一个Qt程序可以只连接到一个小库,形成的程序也更小。

7.1 默认的Qt包括与QtCore和QtGui的连接,可以通过在.pro文件里添加

Qt -=gui

来去掉跟QtGui的连接

 

8. 与3相比,#include的格式变成 #include ,而不是以前的#include

 

9. 全面支持using namesapce Qt命名空间

 

10. QObject和QWidget构造函数的变化。比如QObject的构造不再需要 const char * name了;QWidget不必在构造里指定WFlags了

 

11. 动态cast,添加了qObject_cast<>()。如

QPushButton * pushButton = qobject_cast (obj);

if (pushButton){

...

}

 

12. QPointer的引进,相当于以前的QGuardedPtr

 

13. 绘画事件。全部的绘画操作都得在paintEvent()中执行。而不象以前那样可以在paintEvent外执行了。

 

更详细请阅读http://doc.trolltech.com/4.0/qt4-intro.html

 

qt - CSDN tag

 

 

交叉编译QTE及QTOPIA的目标机版本(作者onebyte)

exportLD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH.为了编译QTOPIA,将QTOPIA文件夹下./src/qt/qconfig-qpe.h拷贝到QTE文件夹下src/tools/将$QTEDIR/lib/fonts/fontdir拷贝到目标机上qt/e的安装路径上(通过在目标机上设置$QTDIR来实现),如/usr/local/qt-embedded/lib/fonts/fontdir.由于在编译qtopia时,需要用到QTE的uic命令来解释有关的资源,所以此处,需要将前面编译的qt-x11中bin目录下的uic命令拷贝至QTEDIR/bin下。exportQTDIR=/friendly-arm/arm-qtopia/qt.export setLD_LIBRARY_PATH=$QTDIR/lib:$QPEDIR/lib.

 

嵌入式linux系统开发概述

基于linux的嵌入式系统开发是一个很大的课题,涵盖了从硬件到软件设计的多个领域,由于linux的开源特性,导致开发中可以使用的软件和工具多不胜数,从最底层与系统硬件直接打交道的引导装载程序(bootloader),到linux操作系统的分发版(distribution),再到上层的图形用户界面(GUI)乃至应用程序(application),可供选择的软件实在是太多了,这对开发者来说是一种恩赐。一旦复制完这些文件,就卸装这个文件系统并且设备(/dev/ram)的内容被转储到一个文件(ext2ramdisk)中,它就是所需的 Ramdisk(Ext2文件系统)。

 

QT的信号与槽机制介绍

信号的声明是在头文件中进行的,QT的signals关键字指出进入了信号声明区,随后即可声明自己的信号。//信号声明区 signals: //声明信号mySignal() void mySignal();//声明信号mySignal(int) void mySignal(int x); //声明信号mySignalParam(int,int)void mySignalParam(int x,int y); //槽声明区 public slots: //声明槽函数mySlot()void mySlot(); //声明槽函数mySlot(int) void mySlot(int x);//声明槽函数mySignalParam (int,int) void mySignalParam(int x,int y);}

 

feiyond - Sun, 06 May 2007 10:49:12 GMT

SUSE LINUX 10.0 软硬件的安装和设置

原理是YaST先扫描源上的包(这么说不确切,如果有时间会说明具体YaST的工作流程和手动安装的方法,不过那应该算是中级教程),然后你来选择安装哪个和更新那个,然后YaST下载安装指定的包。安装方法:在安装源里面添加打开guru(其实你开那个Supplementary GNOME2.12也行,就是安装完了以后d4x软件版本低一些);先点下一步把这些包都装上(也可以把上述几个包从packman的x86_64目录下载,找不到的去i586目录找,w32codec-all那个包挺大的),然后再开YaST-软件管理,搜索mplayer(这个包在packman上,可以下载手动安装),安装。驱动安装:

 

 

解析LINUX下输入法环境变量XMODIFIERS/GTK_IM_MODULE

XIM (X输入法, 所有 X 图形程序都是可用的)2. GTKimmodule(GTK输入模块, 专给 GTK+2/Gnome 程序用的,GTK+ 1 不适用)3. QT immodule(QT输入模块,专给 QT/KDE 程序用的)但是因为 c++ 的兼容性问题使 scim-gtk2-immodule跟许多程序相冲突,故而在目前,如果我们使用scim的话,还不能流畅享受到GTK 输入模块的种种妙处,只能使用 Scim forXIM.注:mozilla, firefox, thunderbird 等不是正规的 GTK+ 2,没办法用鼠标动态选择输入法.如果你仅仅使用GTK immodule的话, 一定要使用GTK_IM_MODULE指定默认的GTK 输入模块.

 

 

RedHat9下面Qt Designer的开发实例

RedHat9下面Qt Designer的开发实例。2.在Qt中新建项目工程文件。新建一个C++项目工程文件,注意在存放的路径上工程文件的名字要和对应的文件夹相一致。比如我们就建立在/home/jackie/cfconv文件夹下面,工程的文件名为cfconv.pro.

 

 

 

 

Linux GUI 开发包简介-GTK

gtk(gimptoolkit)是一个库,用来写图形用户界面程序的。这样的库太多了,windows平台上有mfc、vcl等等,linux平台上更是层出不穷,而且好多都具备跨平台功能,比如Qt、wxWidgets、FLTK等等。gtk与这些库的不同点在于其完全使用C语言开发的。上面只是说了gtk,但我要学习的是gtk+。它们之间有什么关系呢?gtk+的作者之一 PerterMattis说他原来开发的gtk包含了三套函数库, libglib、libgdk,和libgtk,这些库没有采用面向对象机制,因而无法实现构件的复用,而且消息机制是使用标准的回调机制实现的,而非现在的gtk+所提供的信号机制。“+”是用来区分原始版本和新版本的。gtk+依然是完全使用C语言开发的,但在设计上灵活运用了面向对象设计(OOD)思想(谁说只有C++、java、C#这样的语言可以OOD呢?),虽然现在我不是很明白其具体技术细节,但想来,用C来做gtk应该比C++程序执行效率要高一些(当然这只是一种感觉而已,如果C程序写的不够好,不一定比C++高效)。用gtk+写的程序界面的视感很象Motif(Moti

 

 

Qt多线程的一些体会

(1) 带后缀-mt的库才是支持多线程的,例如windows下面的qt-mt320.lib,其他平台libqt-mt(2)编译问题,要添加QT_THREAD_SUPPORT(3)针对线程里面而言,blocking(阻塞的) = synchronous(同步的 )non-blocking (非阻塞的) =asynchronous(异步的 )而Qt的signal/slot的事件机制都是基于主程序的线程的,因此所有的事件都是阻塞型的(blocking),也就是说除非你处理完某个slot事件,不然不会有下个事件被触发。

 

向远处看 - Mon, 02 Apr 2007 11:45:28 GMT

安装Qt-x11开发工具

3. 为Qt设置环境变量. 如果shell是bash, ksh, zsh或sh,那在你home目录下你的的名字的目录中,在.profile文件中追加如下环境变量:QTDIR=/usr/local//Trolltech/Qt-4.2.3/PATH=$QTDIR/bin:$PATHMANPATH=$QTDIR/doc/man:$MANPATHLD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATHexportQTDIR PATH MANPATH LD_LIBRARY_PATH如果你的shell是csh或tcsh,那在你目录下的.login文件中加下如下:4. 配置安装执行configure来对Qt的库和Qt工具进行配置: 到你解压开的工具包目录下执行 ./configure.

 

 

 

感觉qt3-designer明显比qt4好用,不知道为什么qt4里面的designer丢掉了qt3里面ide的功能。另外,qt3里面的QThread明显没不好用,我倒希望能像pthread那样简单的,或者像boost中的线程那样好用,可惜qt3里面只支持QThread。

 

 

QT与SCIM引起的问题

上周安装FSL,其中的FSLview总是崩溃。遍寻数日解决方法,不得。不过据数日来的追寻,今日隐约感觉问题所在,果然。export QT_IM_MODULE=xim解决问题。但是这样每次都需要在terminal中先输入这条命令再在terminal中启动FSL。一劳永逸的方法:用root帐户修改文件/etc/X11/xinit/xinput.d/aux/scim-qtimm,把QT_IM_MODULE=scim改为QT_IM_MODULE=xim。注销重登录,ok参考: mandriva 2005中reallplay10出问题了linux下SCIM的配置方法输入法与环境变量HOWTO解析环境变量XMODIFIERS/GTK_IM_MODULELINUX系统环境变量解决ubuntu下skype和scim不兼容情况附:出错信息[user@acer ~]$ fslview/usr/local/fsl/lib/fslview/bin/fslview:/usr/lib/libGL.so.1: no version information available (required by /u

 

 

 

Qt4开发的IP地址切换器

  下载地址:http://download.enet.com.cn/html/010702007032301.html  

 

fxsjy - Sat, 24 Mar 2007 12:54:52 GMT

EDB Linux Debugger 0.8.3 Release

引用: 0.8.13 released, adding a few fixes and afew new features.* Added getting of working directory and argumentsfrom attached processesthis makes restarting work much better (which isnow enabled).* started work on restart code, seems to work ok.

 

linhanshi - Thu, 22 Mar 2007 11:40:52 GMT

工作日志( 2007-3-6---3--18

在大致观察了一下Guichan的机制后,我就决定把Guichan结合进HGE引擎。HGE社区很多人都有自己的一套扩展HGEGUI控件。如果能把Guichan结合进HGE,HGE就会有一个很适合它的GUI库,并且有强大的社区支持。有些人把CEGUI结合进了HGE,但是我个人觉得CEGUI并不适合HGE,因为CEGUI相对于HGE来说过于庞大,并且其API也很复杂。第一个版本做的很顺利,毕竟我只需要组织HGE的一些接口到另一种Guichan识别的接口即可。并且要求我如果要把这个HGE版本真正地结合进Guichan,还需要我把代码的注释改成doxygen识别的形式,这样利于后面产生文档。

 

kevinlynx - Sun, 18 Mar 2007 21:21:47 GMT

Qt 多线程的一个例子

(2)Project Settings里面Link标签页面添加qtmain.libqt-mt320.lib Project Settings里面C/C++标签页面添加QT_THREAD_SUPPORT.classMyThread : public QThread { public: virtual void run();voidMyThread::run(){MyThread a;Each MyThread stops executing when it reachesthe end of MyThread::run(), just as an application does when it leavesmain().

 

向远处看 - Sat, 17 Mar 2007 10:30:36 GMT

关于POS的各种外设处理(包括打印机、钱箱等)(PB)

现把POS的各种外设处理整理如下,可能还有许多不全或者代码不正确的地方,望大家补充且指证     POS的外设包括打印机、钱箱、顾显、卡、扫码枪和扫码平台。    一般的外设编程可以通过PB通过的串口编程,也有部分特殊的,可由厂家直接提供技术支持。    各种外设如果接的是COM,必须在打开的时候,让其初始化,一般卡可在刷卡的时候再初始化,刷卡结束后,再把COM口关闭。因为如果COM已被某一外设打开,另一外设将不可用,即COM口是独占的。     一、打印机     POS的外设包括打印机、钱箱、顾显、卡、扫码枪和扫码平台。    一般的外设编程可以通过PB通过的串口编程,也有部分特殊的,可由厂家直接提供技术支持。    各种外设如果接的是COM,必须在打开的时候,让其初始化,一般卡可在刷卡的时候再初始化,刷卡结束后,再把COM口关闭。因为如果COM已被某一外设打开,另一外设将不可用,即COM口是独占的。     一、打印机     申明     /*210D′串口打印*/     Function  boolean   OpenSerPort(int   iPt

 

水月邪神(zyc21st) - Wed, 14 Mar 2007 17:14:12 GMT

如何创建WML电话薄(二)

Fields("first_name") &vbCrLf &_"ta.asphttp://www.builder.com.cn/2007/0118/method=http://www.builder.com.cn/2007/0118/posthttp://www.builder.com.cn/2007/0118/>"&vbCrLf &_"

 

 

如何创建WML电话薄(一)

WML是如何工作的WML是基于deck-of-cards(一套纸牌)的原理,即类似于在一套纸牌中控制数量一定纸牌的方式来管理服务的。当移动设备请求WAP服务器时,它是针对整套卡片组的(类似于一套纸牌)而不是某一个页面(类似于某张纸牌)发出请求。除了WML基于XML 1.0标准这一特点之外,WML类似于HTML。基于WML 1.1标准的WML文件开头如下:此代码指定了这是一个XML文档,并且属于WML类型。

 

 

跨平台的GUI Framework : Qt

再来看Microsoft的Visual C++,MFC用的是完整的ANSIC++语言,所以语言部分不是问题,但若你看过用MFC写的程序,你一定会惊讶为什么这么复杂,程序代码非常冗长不好看,且MFC是有名的喃学,若Visual C++搭配.NET Framrwork,则无法使用ANSIC++,得用其.NET平台版本的C++/CLI,相信这点很多人就有意见了,不过.NETFramework由于设计的不错,所以写出来的程序相当精简漂亮,感觉和C++ Builder差不多,不过无论是C++Builder或Visual C++开发的GUI,所开发出来的程序都无法跨平台,当然也无法跨平台Compile。

 

 

 

 

Qt Library

There is a C++ libary called Qt, remindsmyself that although programming language does not care much, but itdetermines programmer community, which shapes a programmer.

 

fei - Sun, 28 May 2006 00:00:00 GMT

各种类自由软件的许可证释义

各种类自由软件的许可证释义就我个人理解,从私有软件(即我们平常所说的封闭源码软件)到GNU所倡导的自由软件之间有许多中间地带,这一方面是一个现实存在的现象,同时也是由软件复杂多样性密不可分的。GPL:我感觉GPL协议与后面要提到的各种许可证协议最重要的区 别,也是GPL的最大特点就是要求所有对GPL软件的更改必须仍然遵循GPL许可证,不可以将GPL的软件更改后变成某些 人的私有软件,GPL软件也不能与其他非GPL的软件融合成一个转有软件。该许可证的软件是否允许他人更改,更改后的结果是否需要反馈 给原创单位。

 

 

 

 

在Qt/Embedded 2.3.8中添加MX21Ads键盘处理

经过查看源代码发现Qt的键盘处理是判断环境变量QWS_KEYBOARD再加载相应的键盘处理拦截类, 而qt已经包含了几个典型的键盘处理,只要以它们为蓝本即可编写自己的处理类! 一下我以 vr4xx为模板,建立QWSMx21ButtonsHandler键盘处理类!以下是相关实现代码,QWSMx21ButtonsHandler::~QWSMx21ButtonsHandler() {} else if (type == "MX21" ) { //这是我们添加的MX21键盘处理类 handler = newQWSMx21ButtonsHandler(); } else { qWarning( "Keyboard type %s:%sunsupported", spec.latin1(), device.latin1() ); }

 

arthas.kang - Fri, 18 May 2007 15:19:57 GMT

QT/Embedded 2.3.8 MX21ADS板移植

3.修正bugtmake和qt-embedded-2.3.8在arm平台上有几个小bug,在链接时使用arm-linux-gcc而不是arm-linux-g++首先修正tmake打开tmake/lib/qws/linux-arm-g++/下的tmake.conf将其中的TMAKE_LINK和TMAK_LINK_SHLIB都修正为arm-linux-g++TMAKE_LINK = arm-linux-g++TMAKE_LINK_SHLIB =arm-linux-g++然后就是qt-embedded下configs/linux-arm-g++{static/shared/static-debug/shared-debug}这几个arm配置中的定义SYSCONF_LINK SYS_CONF_LINK_SHLIB都修正为arm-linux-g++.

 

arthas.kang - Thu, 17 May 2007 10:24:00 GMT

puzzle

接了一个QT写小游戏的项目,找到一个QT3编写的比较不错的开源的,现在改写到QT4,遇到一些问题。总结一下,首先需要先看看帮助中的Porting to Qt4一节,详细介绍了迁移过程。下面是我自己开发中遇到的:0。可以使用qt工具qt3to4把Qt3的程序代码移植成QT41。有些函数,在QT4中以打算不支持,使用#ifdefQT3_SUPPORT宏进行控制,如果用户仍然想用这些函数,需要在编译的时指定这个宏。但不建议使用旧版本的函数啦,所以,你可以查看旧函数的源代码,自己直接调用它调用的其他代替函数。比如QDialog有个setCaption函数,我们可以使用setWindowTitle来代替,等等。2。有些类也进行了修改,如QButtonGroup的基类由QWidget改成了QObject,因此变成了不可见的widget了。不在有标题以及其他界面的函数,也不能直接和layout进行关联。这个时候我们可以借助QGroupBox来实现原来QButtonGroup的一些旧的和界面相关的功能。参考下下面的例子:http://hi.baidu.com/ediwon/blog/item/9

 

owe - Wed, 16 May 2007 23:44:48 GMT

MagicLinux下的开发工具

KDevelop中c/c++的IDE: KDevelop中界面设计师:QT界面设计:UML建模工具:

 

xiaoqiang1894 - Sun, 13 May 2007 18:44:01 GMT

link Qt 出现 undefined reference to vtable for "xxx::xxx"

遇到一个问题,某一个类中如果加入Q_OBJECT后,则link时提示:undefinedreference to vtable for "xxx::xxx",删掉它则没有任何问题.在查找解决方法的时候,附带发现一点:qmake不会处理.cpp文件里的Q_OBJECT,所以,如果在.cpp文件中有它的话,也会产生undefined reference to vtablefor "xxx::xxx". 这时,需要先用mocxxxx.cpp生成相应的moc文件,再包含到.cpp里面去,才能解决这个问题。我找了好多源码之类的问题,就是没有找pro的错误,后来想到qt中moc我们是有make做的,qt的make编译是根据Makefile来的,而Makefile是由pro文件来的。

 

 

 

 

 

今天的工作就这个东西了

APAP_TOWNID = id and cutreply.apap_zt = ‘3‘and cuttree.TRSS_APAPID = cutreply.APAP_ID; return rc; end if; if type1 =2 then select sum(cuttree.TRSS_SCFL) into rc from CF_APPLYAPPROVEcutreply,CF_TREESPECIES cuttree where cutreply.APAP_BXND = yearNum andcutreply.APAP_TOWNID = id and cutreply.apap_zt = ‘3‘ andcuttree.TRSS_APAPID = cutreply.APAP_ID; return rc; end if;

 

 

 

 

如何在minicom下运行可键盘中断结束的qt-embedded程序

使用nfs在minicom下调试qte程序时,由于缺省情况下,qte server会强占键盘,并且使它以写后读模式打开,所以我们在minicom下运行qte程序时,无法用ctrl+c结束它,但当我们试图在运行程序后面加‘&‘符号,使它在后台运行时,通常LCD会没有反应,程序不会运行,这样每次调试都要重新reset板子,很是郁闷。想让程序在后台运行可以用键盘中断结束,需要程序运行时添加参数 -nokeyboard,假如你的程序是 helloworld,像下面那样运行:[root]# ./helloworld-qws -nokeyboard按crtl+c就可以结束它。

 

 

 

 

6-5 可停靠控件和工具栏(Dock Widgets and Toolbars)

可停靠控件能够停靠在QMainWindow中或者作为一个独立窗口浮动。用户可以拖动标题栏把窗口从一个可停靠区域移动到另一个可停靠区域。在Qt的早期版本中,工具条也是作为可停靠控件,可以放置在任何可停靠区域中。下面的代码将一个现有的控件(如QTreeWidget)放置到QDockWidget中,停靠再右边的停靠区域。在上面的代码允许用户把窗口拖动到左边或者右边的可停靠区域,这两个地方垂直控件足够显示一个树型控件。如果没有指定停靠区域,用户可以拖动控件到任何四个可停靠的区域。

 

暳彼小星 - Thu, 10 May 2007 08:49:21 GMT

Qt4 + KDevelop3.3 的开发方式

接下来开始编码,大体上可以分成两种方式直接编写代码和用可视化的QtDesigner自动生成代码。直接编写代码可以用KDevelop做为工具,其中新建项目中选择Qmake项目,使用它可以免去了不断输入qmake-project 和 qmake *.pro的麻烦。使用Qt Designer生成 *.ui文件,可以直接qmake -project后,载qmke *.pro编译,如果需要查看和修改源文件,则可以使用uic *.pro生成 .h 和 .cpp的文件。使用QtDesigner设计完成的ui文件,qmake-project后,可以直接在KDevelop中"导入已有项目",然后编写个main.cpp则可以直接运行。

 

 

 

 

Qt学习笔记一

首先需要注意的是,Qt3 和Qt4的区别较大,许多库函数都有改变,如果用Qt3的代码在Qt4的编译器上运行,则有很大的概率会出错,所以学习资料和使用的Qt版本一定要配套。装FC6的时候,默认装了Qt3.3,而其中的Qt assistant不能直接使用,解决方式是再装个Qt4,使用Qt4的assistant。

 

 

 

 

Qt学习笔记一

首先需要注意的是,Qt3 和Qt4的区别较大,许多库函数都有改变,如果用Qt3的代码在Qt4的编译器上运行,则有很大的概率会出错,所以学习资料和使用的Qt版本一定要配套。装FC6的时候,默认装了Qt3.3,而其中的Qt assistant不能直接使用,解决方式是再装个Qt4,使用Qt4的assistant。

 

 

 

在windows平台下安装运行qt4.3

到qt官方下载qt4.3默认安装设置环境变量 pathqt的bin的目录下载MinGW默认安装设置环境变量 pathMinGW的bin的目录。qt用的编译器是g++所以得安装MinGw须将MinGW的bin的目录设置到环境变量path中否则使用make命令时会出现这样的错误:mingw-make既不是命令,也是不有效的批处理文件我们只要打开qtbin目录下的make,看看它的内容就会明白为什么会出这样的错误了@echo offmingw32-make %*

 

 

 

Qt书籍及开发环境(转:linux宝库)

最近发现Qt真是个好东东啊,兴奋得好几个晚上睡不着觉....终于可以快速开发跨平台的图形界面的程序了下面向大家隆重介绍一下:Qt企业版和Qt专业版 提供给商业软件开发。Qt自由版是Qt仅仅为了开发自由和开放源码软件提供的Unix/X11版本。Qt/嵌入式自由版是Qt为了开发自由软件提供的嵌入式版本。

 

 

 

 

开始学学QT了!

没想到五一期间图书馆还开门,呵呵,借到一本还不错的QT程序设计的书!当然学习QT的设计完全是准备当成业余爱好,主要用到C++,我还是集中精神在驱动和内核方面,但是我想能够对整个产品的全线设计都有点了解还是比较好!本来可以在应用层完成的功能要我去驱动层完成,那就太~~~~~~~~

 

 

 

 

Qt-embedded-3.2.3到PXA270上的移植

1.下载软件包ftp://www.trolltech.com/qt/source/qt-embedded-free-3.2.3.tar.gz2. 解压tar vxzf qt-embedded-free-3.2.3.tar.gz -C/root/qt/qt-embedded-free-3.2.33. 添加触摸屏驱动修改src/embedded/qmouselinuxtp_qws.h 添加 #define QT_QWS_IPAQ定义,或者在交叉编译时添加编译参数 -DQT_QWS_IPAQ效果也是一样的。/bin/shexport QTEDIR=`pwd`exportQTDIR=$QTEDIR#下面指定我的交叉编译器的目录路径exportPATH=/opt/host/armv4l/bin:$PATHexport PATH=$QTDIR/bin:$PATHexportLD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH.

 

duwchy - Sat, 05 May 2007 20:58:47 GMT

移植 Qtopia-core-opensource-src-4.3.0beta 到 PXA270

移植这个qtopia-core比较麻烦,由于我的编译器是ARM-GCC-2.95的,有很多地方要修改才能交叉编译成功。1.下面是需要修改的文件或者配置的详细情况:1).修改src/corelib/kernel/qvariant_p.h 文件的 v_cast 函数template inline const T *v_cast(const QVariant::Private *nd, T * = 0){

 

 

 

qt/X11使窗口没有边框并且不在任务栏里显示

MainForm::MainForm(QWidget *parent, constchar *name):MainFormBase(parent, name, Qt::WStyle_NoBorder |Qt::WStyle_Customize // <--- set flags here )...

 

 

 

 

 

qoozone - Sat, 28 Apr 2007 12:35:24 GMT

unicode utf8编码判断

/*!\class bool xxx::isUtf8(const char *str) *\brief utf8编码编码判断函数 * \param 无 * \author qqqmal * \version 无 *\exception 无 * \return 无 */ bool xxx::isUtf8(const char *str) { unsignedint len = strlen (str); unsigned int counter = 0; unsigned char head =0x80; unsigned char tempStr; unsigned int gbNum = 0,utf8Num = 0; boolgb2 = FALSE;/*第二个字节是否为汉字 */ for (int i=len-1; i>=0; i--) { tempStr =(unsigned char)str[ i]; /*GB判断, gb范围:第一字节161~247,第二字节161~2

 

qoozone - Sat, 28 Apr 2007 12:41:44 GMT

关于qt国际化的问题

关于qt国际化qt对国际化有很好的支持。比如在默认情况下QMessageBox::information(this, "Test", "这是一个测试");中文字符无法正确显式又如boolconnect(const char * connectString);你如果输入QStringstr("一个测试");connect((constchar*)str);默认是调用QString.latin1()方法,是直接从Unicode的QString返回latin-1字符表示集。当显示一个const char*时,qt会将const char*再行转成unicode。

 

 

 

 

关于qt4.2.3的安装。使用编译器是vc8或者是vc2005 没有打sp1 在windows xp 下

先说明一下机器配置:core2 e6300内存2g其实我最早安装的是qt3,呵呵,由于现在升级了,我也得跟上时代。因为是企业用,所以安装的版本是商业版的。版本是qt-win-commercial-src-4.2.3因为商业版本的configure时候需要一个.qt-license文件(3)设置环境变量:我的设置如下:QTDIR =c:\qt-win-commercial-src-4.2.3QMAKESPEC=win32-msvc2005PATH=%QTDIR%bin(4)进入命令行控制台,在c:\qt-win-commercial-src-4.23下执行configure就ok了,然后是nmake这个时候,可以看场电影,或者打局魔兽什么的都可以,大约2个小时左右吧。

 

 

 

 

 

 

6-3 分隔控件(Splitters)

下面是创建图6.7的窗体的代码:int main(int argc, char*argv[]){ QApplication app(argc, argv); QTextEdit *editor1 = newQTextEdit; QTextEdit *editor2 = new QTextEdit; QTextEdit *editor3 = newQTextEdit; QSplitter splitter(Qt::Horizontal);splitter.addWidget(editor1); splitter.addWidget(editor2);splitter.addWidget(editor3); ... splitter.show(); returnapp.exec();}Figure 6.7. The Splitter application.

 

 

 

 

6-2 分组布局(Stacked Layouts)

QStackedLayout类把子控件进行分组或者分页,一次只显示一组或者一页,隐藏其他组或者页上的控件。连接QListWidget的信号currentRowChanged(int)和QStackedLayout的函数setCurrentIndex(int)连接,改变QListWidget的当前项时换页。这样的对话框使用Qt Designer会更加简单:1.用"Dialog"或者"Widget"模板创建一个窗体、2.在窗体上增加一个QListWidget和一个QStackedWidget控件。连接QListWidget控件的currentRowChanged(int)信号和QStackedWidget控件的槽setCurrentIndex(int)。

 

 

 

第六章序-布局管理(Chapter 6. Layout Management)

窗体上的所有的控件必须有一个合适的尺寸和位置。使用这些Qt布局管理类的另一个原因是,在程序改变字体,语言或者在不同的平台上运行时,布局管理器能够自动调整窗体里所有控件的大小和尺寸。这些类的共同特点是提供了更加灵活的布局管理,在一定程度上用户能够控制窗体内控件的大小。

 

 

 

5-4 双缓冲技术(Double Buffering)(4、私有函数的实现)

Qt也提供了一个类QRubberBand用来绘制橡皮线,但是控件自己提供的绘制函数会更好void Plotter::refreshPixmap(){ pixmap = QPixmap(size());pixmap.fill(this, 0, 0); QPainter painter(&pixmap);painter.initFrom(this); drawGrid(&painter);drawCurves(&painter);update();}函数refreshPixmap()把plot绘制到图片上,并且更新控件。在这个函数中,我们使用了一个QPainter绘制图片,QPainter::initFrom()设置绘制图片所需画笔,背景和字体,参数this表示这些设置和Plotter控件的相应设置是一致的。

 

 

 

5-4 双缓冲技术(Double Buffering)(3、事件处理函数)

以下是Plotter控件的事件处理函数部分.QStylePainter::drawPrimitive()函数调用QStyle的同名函数,绘制控件的一些基本原色,如面板,按钮,焦点矩形等。对于Plotter,我们使用两个方式的组合,焦点矩形用QStyle样式绘制,zoomIn和zoomOut按钮为Qt提供的控件。如果用户向上或者向下移动鼠标,rubberBandRect的右下角可能会到达它的左上角的上面或者左面,QRect的width和height会出现负值,在paintEvent()函数中调用了QRect::normalized()函数,它可以重新计算矩形的左上角和右下角的坐标值,保证得到一个非负的宽和高。

 

 

 

5-4 双缓冲技术(Double Buffering)(1、简介和源代码部分)

第二部分为Plotter控件的公有函数的实现,第三部分为Plotter的事件处理函数的实现,第四部分为Plotter控件的私有函数实现,第五部分为辅助类PlotSettings的实现。首先看一下头文件的代码(对头文件的解析在代码中用注释的形式给出):#ifndef PLOTTER_H#define PLOTTER_H #include//包含的Qt的头文件#include #include#include class QToolButton; //两个前向声明classPlotSettings; class Plotter : public QWidget{#include"plotter.h"Plotter::Plotter(QWidget *parent) : QWidget(parent){

 

暳彼小星 - Tue, 24 Apr 2007 21:51:31 GMT

qt designer布局:随着窗口大小变化

终于明白,该怎么做了只要在窗体的空白处点右键再选布局就可以了

 

stlxv - Tue, 24 Apr 2007 21:31:00 GMT

拒绝了一次转型

虽然不喜欢Delphi,但也不喜欢Web.相信QT

 

speme - Tue, 24 Apr 2007 19:32:29 GMT

QT3.3中QTimer使用类变量中对象指针时的Bug;

先描述一下整个代码的情况,有这么两个类,一个是QA,一个是QB,在QA类中有这么一个方法func,它初始化一个QB类的实例;QB的这个构造函数如下:QB::QB(QString *pv_str)...{ //this->pm_str = pv_str; // pm_str是一个QString*的QB的类变量;上面是代码说明,总结一下就是,现在要在QB中的Timer结束时打印输出由QA传给QB的QString;因为把QB::on_timer_done()中的这个打印语句放到QB中的其他方法中使用,是可以正确无误通过的,但是只要放到qtimer中的执行槽中,就一定出段错误,所以,这里报个qt的bug,嘿嘿。。。

 

lsosa - Wed, 25 Apr 2007 09:02:48 GMT

fc6下用KDevelop开发Qt4

fc6自带的是qt3.3.所以需要自己安装qt4,安装qt4和设置环境变量的过程见我的上一篇文章http://blog.csdn.net/yang_dk/archive/2007/04/23/1576486.aspx.在终端输入echo$QTDIR如果出来的是/usr/lib/qt3.3,那么回去重新设置环境变量如果出来的是/usr/local/Trolltech/Qt-4.2.3之类的,ok!往下走(需要提到的一点是,安装了Qt4之后,不要安装KDevelop的新版本3.4.0,它不认qt4,configure的时候会出错,我还没弄明白为什么,无论如何就是不能通过。

 

yang_dk - Tue, 24 Apr 2007 13:37:37 GMT

QTable中header高度

在QTable中,如果我们把horizontalHeader的高度设置的比较大的话,很可能会覆盖掉QTable中的一些内容,在Qt2.3中,QTable不会根据horizontalHeader自动调整,所以我通过如下方法解决:这样,horizontalHeader就不会覆盖掉QTable中的东西了。

 

siddontang - Tue, 24 Apr 2007 09:52:05 GMT

QWidget在QPopupMenu显示

在QPopupMenu中,如果我insert awidget,如果这个widget直接继承于QWidget,他很可能无法正确显示,即使设置了该widget的geometry也不行,我的解决方法如下,在创建widget的构造函数中:QScrollView *view = new QScrollView(this);QWidget*container = new QWidget(view->viewport());

 

siddontang - Tue, 24 Apr 2007 09:52:21 GMT

fc6下找不到Qt assistant的问题的解决方法

fc6默认安装了Kdevelop3.3.?和qt3.3.6,但是qt的assistant并没有安装,所以在敲入assistant之后并没有出来预想中的qt assistant,而是蹦出来一个错误说/usr/share/doc/qt-devel-3.3.6/html/index.html找不到因为assistant命令打开的是$QTDIR/bin下的assistant,assistant链接到/usr/share/doc/qt-devel-3.3.6/html/index.html,而默认的/usr/share/doc/qt-devel-3.3.6/html/index.html却并没有安装,所以肯定找不到。建议解决办法:安装qt4并使用qt4的assistant步骤:1、下载安装包,比如我用的是qt-x11-opensource-src-4.2.3.tar.gz2、解压,输入命令          tar -zxvfqt-x11-opensource-src-4.2.3.tar.gz      会在这个目录下生成一个名为qt-x11-opensource-src-4.2.

 

yang_dk - Mon, 23 Apr 2007 19:34:22 GMT

ubuntu7.04中Scim的几个问题的解决方法

将默认的 GTK_IM_MODULE=scim 修改为GTK_IM_MODULE="scim-bridge"# exported enviromentvariablesXMODIFIERS="@im=SCIM"GTK_IM_MODULE="scim-bridge"QT_IM_MODULE="xim"#command and arguments to invokescimXIM_PROGRAM="/usr/bin/scim"XIM_ARGS="--daemon"# package dependency(note that the format used here is not environment# variable, but someformat for libapt-pkg-perl and is parsed by grep,# so can‘t be quoted,and no spaces allowed)DEPENDS=scim-gtk2-i

 

Crazy7 - Sun, 22 Apr 2007 20:44:44 GMT

使用vc编译psi

这里将产生src.dsppsiwidgets.dsp两个文件,就是Psi工程和Psi界面库工程了,用vc打开之前还要修改一下src.dsp工程文件,因为转过来的时候有些参数没有加上。mkdir mypsicopy src\src.exe psiwin\Psi.execopy%QTDIR%\bin\qt-mt*.dll psiwincopy ..\qca\qca*.dll psiwincopysrc\tools\idle\win32\idleui.dll psiwinxcopy /e certs psiwin\certs\xcopy/e iconsets psiwin\iconsets\xcopy /e sound psiwin\sound\copy COPYINGpsiwinwin32\tod README psiwin\Readme.txtwin32\tod INSTALLpsiwin\Install.txt.

 

yebeans - Sat, 21 Apr 2007 18:35:33 GMT

qt 在Windows下的安装

一.下载并安装qt源码包。譬如我的目录是:C:\QT\qt-win-opensource-src-4.1.1.四.配置并安装qtvc6对应-msvc;vs2003对应-msvc.net;vs2005对应-msvc2005根据你的vc的平台,运行C:\QT\qt-win-opensource-src-4.1.1\qconfigure.batmsvc2005(我用的是2005) 五.设置环境变量将qt的bin目录追加到环境变量PATH中,(我的电脑->属性->高级->环境变量->Path)新建一个环境变量,名称是QMAKESPEC,值因vc版本不同而不同 vc6对应QMAKESPEC值为win32-msvc,2003对应thenwin32-msvc.net,2005对应win32-msvc2005 测试环境变量是否正确。

 

sjdev - Sat, 21 Apr 2007 09:44:46 GMT

自定义slot的简单例子程序

#include "MyMainWindow.h"//#include//#includeMyMainWindow::MyMainWindow(){}voidMyMainWindow::drawmyline(){slot是qt专有的标志符,不是c++语言中定义的关键字,c++编译器不可能识别它.为此,qt提供了一个工具:如果源程序中有 qt 专有的关键字slot orsigal,必需将源文件分割成三部分,.h头文件,.cpp源文件,如果将qt 专有的关键字slot orsigal混入众多的源文件中,势必造成不必要的混乱,而且生成。qmake生成makefile文件,qmake会自动把moc所要执行的一系列动作命令,添加到makefile中,

 

 

 

 

rpath

g++ -W -Wall -o sdp-player sdp-player.o-L/home/sdp-player/lib/player -lplayer -L/home/sdp-player/lib/transport-ltransport -L/home/sdp-player/lib/utilities -lutilities-L/usr/local/Trolltech/Qt-4.2.0/lib -lQtCore -lz -lm -lglib-2.0-lpthread -ldl -lQtGui -lpng -lfreetype -lQtNetwork -L/usr/local/lib-lavformat -lavcodec -lm -lz -ldl -lavutil -lboost_thread-lboost_filesystem -lboost_iostreams -lrt.

 

hahapro - Fri, 20 Apr 2007 16:49:59 GMT

Qt/Embedded 2.3.10 到PXA270上的移植

7.nfs挂载运行qte库及qte程序假如我把qte库及相关库放在/root/qteshared 目录的lib目录下:cp $QTDIR/lib/libqte.so* /root/qteshared/libcp/root/e2fs-install/libuuid.so* /root/qteshared/libcp/root/tslib-install/libts-0.0.so*/root/qteshared/lib(如果编译了jpeg库也一样操作)并且/root/qteshared设置成nfs共享了,我的hello程序放在/root/qteshared下,然后我在minicom下挂载这个目录:挂载成功的话就可以设置板子上的环境变量:exportLD_LIBRARY_PATH=/qt/lib:$LD_LIBRARY_PATHexport QTDIR=/qt然后。

 

duwchy - Fri, 20 Apr 2007 13:21:36 GMT

Qt4,想说爱你不容易

界面画好后,使用uic来根据界面生成代码文件,QT3的uic可以自动生成.h和.cpp文件,假设你在制作一个名叫TestDialog的对话框,那么QT3的uic生成的文件则是TestDialog.h和TestDialog.cpp,所有的界面初始化工作都在cpp文件中执行,之后程序的逻辑代码也将加入这个文件,那么对于一个已经完成逻辑功能的对话框来说,如果要修改界面布局,你就不得不重新用uic生成.h和.cpp文件,然后将其中界面相关的代码复制到你已经修改的文件中,此时决不能直接用uic直接生成到修改过的文件上,因为那样你的代码将全部被冲掉。

 

yang_dk - Fri, 20 Apr 2007 12:39:39 GMT

终于解决kdevelop 无法找到qt头文件的方法了

问题:执行configure老是出错,提示无法找到qt头文件和库。在config.log文件里面查看执行configure的过程,发现居然查找qt的路径跟默认安装的不一样。默认安装进qt-3.3文件夹,但是configure查找的是qt文件夹。本来想直接改文件夹名字,后来为了保险还是再创建一个qt文件夹。

 

JYYCOM - Tue, 17 Apr 2007 00:43:47 GMT

Kdevelop+QT

折腾了大半天Kdevelop终于可以编译了 ,我装的是fedora core3是在台式机上装的,用VNC远程登录,用笔记本来操作,默认登录gnome界面。还必须点kde菜单里面的kdevelop,结果成功!得出教训,不能急于求成,我就是连kde和kdevelop的关系都没搞懂,就急着用,太低级了。

 

JYYCOM - Sun, 15 Apr 2007 11:37:23 GMT

怎么在qt4中显示中文:

怎么在qt4中显示中文:在代码中用可以用英文命名各个元件,但是main.cpp中加入以下语句: QTranslator translator;translator.load("hellotr_la"); app.installTranslator(&translator);然后运行qmake -project 在生成的.pro文件中加一下语句: TRANSLATIONS=hellotr_la.ts 运行 qmake运行 lupdate -verbose hellotr_la.pro 生成.ts文件 (.ts format ishuman-readable XML that can be emailed directly and is easy to put underversion control) 运行 linguist hellotr_la.ts 打开QT linguist Trolltech选中你要改名的元件,在Translation下写要改成的中文名.

 

jjhui - Sat, 14 Apr 2007 16:10:42 GMT

qt-designer使用教程3--编写自己的槽

从菜单栏的 File->New 打开新建对话框,选择最后一个:C++Main-File(main.cpp).然后也同样保存到刚刚创建的文件夹 /home/DesignerTutorial/tutorial3下。生成Makefile文件:[root@localhost tutorial3]# qmake编译:[root@localhosttutorial3]# make[root@localhost DesignerTutorial3]# lsform_main.uimain.cpp Makefile tutorial3 tutorial3.pro可以看到 tutorial3,这就是我们的可执行程序,运行:[root@localhost tutorial3]# ./tutorial3在两个输入框中输入数字,点击"加"按钮,看看效果再输入非数字字符,看看效果。

 

ecjtuync - Wed, 02 May 2007 10:01:48 GMT

qt-designer使用教程2--调用退出

第二章 调用退出 上一章我们学习了 QT Designer的基本使用方法,这一章我们添加一些稍稍复杂的功能。这时侯,你的 QT Designer 中就会出现一个 From1 来. 更改右下角那个窗口里的caption ,原内容 "Form1"改为 "我的第二个QT Desiger程序--调用退出", name , 原内容 "Form1"改为"form_main"可以看到这时候窗口的标题栏文字已经改变为"Form1"改为 "我的第二个QT Desiger程序--调用退出",不是吗?

 

ecjtuync - Wed, 02 May 2007 10:02:23 GMT

qt-designer使用教程1--HelloWorld

[root@localhost test]# mkdir/root/DesignerTutorial1[root@localhost test]# cd/root/DesignerTutorial1然后打开 QT Designer,直接在命令行下输入:designer,如下:[root@localhost DesignerTutorial1]#designer&[3] 16544[root@localhost DesignerTutorial1]#这里我们看到"QtDesigner - New/Open"对话框,这是一个新建对话框,我们可以通过从菜单栏的 File->New 来打开它。

 

ecjtuync - Wed, 02 May 2007 10:02:03 GMT

QT-X11-3.1.2.tar.bz2的使用

总纲:编译QT-X11-3.1.2.tar.bz2,得到在PC上运行的代码,得到执行的文件.以便阅读QT的源程序. 1 网上下载一个QT-X11-3.1.2.tar.bz2 的版本. 2 解压: tar -jxvf qt-X11-3.1.2.tar.bz2 3执行配置文件:  ./configure 4 清除编译环境   make distclean 5执行编译,这一步比较复杂,编译的时间比较长.一两个小时吧.Waiting...........  make        6看看编译后的成果:    编译完成后,就可在PC机的X86的构架之下运行执行的代码.    >>  cdexamples/demo   >>  ./demo 7 说明: 对于 qt-embedded-free-3.1.1.tar.bz2这样的版本不能合适这个编译的条件,即使编译出来,但也不能够  得到运行的条件,不执行编译出来后的代码.

 

ecjtuync - Wed, 02 May 2007 14:10:36 GMT

网页中一些Html编辑器中的方法

AddText(AddTxt);AddTxt="[size="+size+"]"+txt;AddTxt="[font="+font+"]";AddTxt="[font="+font+"]"+txt;AddTxt="[color="+color+"]";AddTxt="[color="+color+"]"+txt;} else if (basic) { AddTxt="";} else if(basic) { AddTxt="[flash][/flash]";} else if (basic) { AddTxt="";} elseif (basic) { AddTxt="[quote][

 

xuxuebin - Sat, 14 Apr 2007 10:48:03 GMT

Linux 用qmake快速生成makefile

1.简介:  qmake是Trolltech公司创建的用来为不同的平台和编译器书写Makefile的工具。} 创建qmake需要的项目文件(hello.pro),  SOURCES = hello.cpp  CONFIG =qt warn_on release   Makefile可以像这样由".pro"文件生成:   qmake -o Makefilehello.pro   现在你的目录下已经产生了一个 Makefile 文件,输入"make" 指令就可以开始编译 hello.c成执行文件,执行 ./hello 和 world 打声招呼吧!下面这些选项定义了所要连编的库/应用程序的类型:  qt -应用程序是一个Qt应用程序,并且Qt库将会被连接。

 

ecjtuync - Wed, 02 May 2007 14:10:58 GMT

qt

事实证明我是个穷折腾的人,下午喝了啤酒,就不知道该干嘛好了,随便翻翻新闻组,看到一伙人在打嘴仗,hohoqt和gtk,无外呼c好。。。。或是c 如何如何,互相互指软肋,本来没事下个qt在w...

 

康国庆 - Sat, 14 Apr 2007 17:01:27 GMT

qtopia2交叉编译终于成功了。

echo "************remove olddirs************"rm -rf qt-x11rm -rf qtopiarm -rf qterm -rf tmakerm -rfjpegrm -rf e2fsrm -rf tslibrm -rf librm -rf includerm -rf png.echo"************unpack tar packages************"tar -xvfe2fsprogs-1.39.tar.gztar -xvf jpegsrc.v6b.tar.gztar -xvfqt-embedded-2.3.10-free.tar.gztar -xvfqtopia-free-source-2.1.1.tar.bz2tar -xvf qt-x11-2.3.2.tar.gztar -xvftmake-1.13.tar.gztar -xvf tslib-1.3.tar.bz2tar -xvflibpng-1.2.14.tar.bz2.

 

hahapro - Fri, 13 Apr 2007 09:51:44 GMT

gtk和qt

目前主流的Linux窗口系统有:PC上使用的基于开放源代码的Gnome和KDE、嵌入式设备上使用的开放源代码Opie和Gpe,以及一些商业化的版本(如Motorola的PDA手机的窗口系统)。Opie(Open PalmtopIntegratedEnvironment)窗口系统类似于桌面领域中的KDE,Opie基于Qtopia,Qtopia是基于Qt/Embedded的简化窗口系统。KDE窗口系统基于Qt/X11,Qt/X11又基于X Window系统。

 

dreamtofly - Wed, 11 Apr 2007 20:29:32 GMT

转些资料,查起来也方便

SkyEye嵌入式硬件仿真项目。中国Linux论坛的嵌入式版,有很多开发板原理图的资料。嵌入式Linux联盟(ELC),一个非盈利性的厂商中立的同业工会,其目标是在整个嵌入式。BeyondLogic公司主页,提供了许多嵌入式Linux系统开发的资料。D_J嵌入式个人主页,有很多资料!嵌入式GUI.Microwindows由Century Software的CEO GregHaerr主持开发的一个公开源码(LGPL)的。Microwindows的主要目的之一便是运行在嵌入式Linu.GUI是一种面向嵌入式系统或者实时系统的公开源码(LGPL)的图形用户界面支持系统。Qt/Embedded是公开源码(LGPL)项目。

 

xrdsgxx - Wed, 11 Apr 2007 11:46:05 GMT

5-3 把自定义控件集成到Qt Designer中(Integrating Custom Widgets with Qt Designer)

要想在Qt Designer中使用自定义控件,必须要使QtDesigner能够知道我们的自定义控件的存在。函数icon()返回控件在Qt Designer中用的图标。.pro文件如下:TEMPLATE =libCONFIG += designer plugin releaseHEADERS =../iconeditor/iconeditor.h \ iconeditorplugin.hSOURCES =../iconeditor/iconeditor.cpp \ iconeditorplugin.cppRESOURCES =iconeditorplugin.qrcDESTDIR =$(QTDIR)/plugins/designer.pro文件假定QTDIR位于Qt的安装目录。

 

暳彼小星 - Tue, 10 Apr 2007 10:51:17 GMT

几种界面开发的个人感受

昨天看了几段WPF的视频教程,回想了一下自己接触过的几种界面开发方式,每种给我的感觉都不同。最先接触的界面开发是MFC,那时初学编程,什么基础都没有,所以学起来有点头痛。昨天看了几段WPF的视频教程,没有深入去看相关资料,但昨天给我的映象是我再也不想进行windows界面开发了,最初看了几个小的例子倒觉得很简单,给xaml中的元素属性随便赋几个值就行了,的确是一种好的界面开发方式。但它显然打算提高界面开发的门槛,它要让界面酷且眩,那么就不得不让专业美工来进行界面开发,还好就是WPF很方便的支持这种开发方式。

 

lyskyly - Sun, 08 Apr 2007 12:36:49 GMT

Linux桌面两大阵营 GNOME与KDE的战争

虽然在商业方面存在竞争,GNOME与KDE两大阵营的开发者关系并没有变得更糟,相反他们都意识到支持对方的重要性--如果KDE和GNOME无法实现应用程序的共享,那不仅是巨大的资源浪费,而且将导致Linux出现根本上的分裂。但KDE在商业支持方面每况愈下,Novell在11月宣布旗下所有的商业性发行版将使用GNOME作为默认桌面(仍会对KDELibraries提供支持),SuSELinux桌面版则会对KDE与GNOME提供同等支持,而社区支持的OpenSuSE仍将使用KDE体系--但谁都明白GNOME将成为Novell的重心,KDE只是活跃在免费的自由发行版中。

 

apollowm - Sun, 08 Apr 2007 12:17:29 GMT

linux 图形界面GUI开发,跨平台调用Web Service

最近有用 Qt/Embedded开发一个界面,用于一款嵌入式Linux设备,有些心得想跟大家分享一下。Qt是Trolltech公司的产品,Trolltech是挪威的一家软件公司,主要开发两种产品:一种是跨平台应用程序界面框架;在Trolltech官方网站下载QT库, 我用的版本为 qt-2.3.7, 配置好 QT 及QMAKE 环境变量:#export QTDIR=/qt_home/qt-2.3.7#exportLD_LIBRARY_PATH=$QTDIR/lib:$QPEDIR/lib:#exportPATH=/usr/local/qmake/bin/:$PATH#exportQMAKESPEC=/usr/local/qmake/mkspecs/qws/linux-x86-g++/VC++开发界面(整合了QT工具条):

 

kimwu - Sat, 21 Apr 2007 00:39:43 GMT

建立Embedded QT 开发环境

mv qvfb $QTEDIR/bin/ 4.Build libqte:cd$QTEDIRexport TMAKEPATH=$TMAKEDIR/lib/qws/linux-x86-g++exportQTDIR=$QTEDIRexport PATH=$QTDIR/bin:$PATHexportLD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATHcp -f$QPEDIR/src/qt/qconfig-qpe.h src/tools/./configure -system-jpeg -no-xft-qconfig qpe -qvfb -depths 4,8,16,32make sub-src 5.Build Qtopia:cd$QPEDIRexport QTDIR=$QTEDIRexport PATH=$QPEDIR/bin:$PATHexportLD_LIBRARY_PATH=$QPEDIR/lib:$LD_LIBRARY_PATH./configuremake.

 

zht_sir - Sat, 07 Apr 2007 14:05:59 GMT

5-2 从QWidget继承新类(Subclassing QWidget)

许多Qt的控件或者象HexSpinBox这些自定义控件都是现有的控件的一个组合。由Qt控件组合而成的用户控件可以用Qt Designer实现:1. 用模板"Widget"新建一个控件框架2.在框架中加入需要的控件,并对控件进行布局3. 进行信号和槽连接4.如果还需要更多的信号和槽,可以在继承QWidget和uic生成的类中添加相关代码 这种控件的组合也可以用代码实现。下面是头文件:#ifndefICONEDITOR_H#define ICONEDITOR_H#include #include#include class IconEditor : public QWidget{

 

暳彼小星 - Fri, 06 Apr 2007 22:19:26 GMT

安装与建立 Qt 桌面开发运行环境

1.下载Qt在TrollTech网站http://www.trolltech.com/developer/上搜索下载Qt的相关包,包括qt-embedded-free-3.3.4.tar.gzqt-x11-opensource-src-4.2.3.tar.gztmake-1.8.tar.gz#可以不要,因为有现在这些高版本的qt-embedded,qt-x11,qtopia里就有qmake这些都是最新的Qt版本,编译过程好像跟查资料时的老版本的步骤有很大的不同,比如新版本使用qmake而不像以前使用tmake,还有configure脚本文件配置时的参数有许多变化,编译时没有什么资料可以查,除了trolltech本身的一些文档,剩下的只好自己摸索了。

 

duwchy - Fri, 06 Apr 2007 20:24:00 GMT

引用:DoxyGen文档之四

http://blog.csdn.net/SigmaSys/archive/2003/12/28/21949.aspx第二章:Documenting the code特殊的注释。一种特殊的注释是带有一些额外标记的C/C++注释块,这样doxygen就知道需要将其加入到文档中了。对于每个代码块都有两种注释,这两种注释组成了文档:一种是brief 描述另一种是detailed描述,都是可选的。有以下方式添加brief注释。一种是在上述注释块中使用\brief,然后一个空行后跟着Detail注释。这些单行注释包括一个brief描述,而multi-line注释块包含一个更详细的描述。缺省的,JavaDoc风格的注释块和Qt风格的注释同样有效。

 

prophet08 - Fri, 13 Apr 2007 16:35:26 GMT

Windows命令行下QT编程

当然,你还可以用QT Designer快速建立.ui文件,以生成相应的界面类文件.

 

游荡人 - Wed, 04 Apr 2007 12:50:06 GMT

qte for arm的编译过程

自从接触qte以来,便觉得qte在众多嵌入式GUI中算上层的,其构建很清晰,充分利用了c++的继承、多态等,读了部分源码很有收获。先到http://ftp.citkit.ru/pub/qt/source/去下载了qte-3.4的源码,解压,先cp一份,并把其中一份命名为qte-arm,因为我们需要先编译pc上的qte,得到两个工具,bin/moc、bin/uic,我们写的qte程序里面的信号糟等,需要用moc工具来"解析"(具体的可以去qiliang的主页看看),而我们的目标环境是arm,所以我们编译出来的moc工具是arm-elf格式的,这在X86的机子上是不能运行的。

 

learndkid - Mon, 02 Apr 2007 14:22:26 GMT

QtEmbedded/Qtopia FAQ

Qt-X11/QtEmbedded/Qtopia及其他常见包的关系?buildQtopia时经常能看到以下的包:qt-x11-2.3.2qt-x11-3.3.xqte-2.3.xqtopia-2.xtmake-1.3qmake, uic, moc...Qtopia/QtEmbedded版本对应关系?Qtopia1.7.0 / Qte2.3.7Qtopia2.1.1 / Qte 2.3.10Qtopia2.1.2 / Qte 2.3.11Qtopia2.2.0 / Qte2.3.12(包含在qtopia2.2源码包中)然后把你的程序cp到qtopia程序默认的搜索路径中:应用程序放到SRCDIR/qtopia/image/opt/Qtopia/bin下;Qtopia 和Qte程序都会在运行时的$QTDIR/lib/fonts目录里搜索字体,所以你要用的字体也要放在这个地方。

 

learndkid - Mon, 02 Apr 2007 10:16:22 GMT

5-1 自定义Qt控件(Customizing Qt Widgets)

在某些情况下,我们发现有些Qt控件通过设置它的属性或者函数不能满足我们的要求,还需要更多的要求。#ifndef HEXSPINBOX_H#define HEXSPINBOX_H#includeclassQRegExpValidator;类HexSpinBox继承了很多QSpinBox的功能。#include#include "hexspinbox.h"HexSpinBox::HexSpinBox(QWidget*parent) : QSpinBox(parent){QSpinBox调用函数validate()确定是否输入的文本是合法的。16作为基数,QString::number()把数值转换为小写的十六进制,QString::toUpper()将得到的结果转换为大写。

 

暳彼小星 - Tue, 27 Mar 2007 21:52:40 GMT

第五章用户自定义控件(Creating Custom Widgets)及第四章小结

用户自定义的控件可以通过继承现有的Qt控件实现,也可以直接从QWidget继承。介绍自定义控件如何放到Qt Designer的控件列表中象Qt自己的控件一样使用。最后介绍一个使用双缓冲的自定义控件,双缓冲是实现高速绘制图形的一种技术。

 

暳彼小星 - Tue, 27 Mar 2007 19:10:06 GMT

4-6 继承类QTableWidgetItem(Subclassing QTableWidgetItem)

= ‘+‘ && op != ‘-‘) return result;++pos; QVariant term = evalTerm(str, pos); if (result.type() ==QVariant::Double && term.type() == QVariant::Double) { if (op ==‘+‘) { result = result.toDouble() + term.toDouble(); } else { result =result.toDouble() - term.toDouble(); } } else { result = Invalid; } }return result;}函数setFormula()设置网格的公式。

 

暳彼小星 - Tue, 27 Mar 2007 19:07:16 GMT

移植qtopia-1.7.0到2410

2 建立图标文件 tar zxvf qtopia-free-1.7.0.tar.gzcd qtopia-free-1.7.0 cp ../../my.png pics/inline/my.png../qt-2.3.2/tools/qembed/qembed --images pics/inline/*.*>src/libraries/qtopia/inlinepics_p.h.给根目录添加文件 添加.desktop文件 cp$QPEDIR/apps/Applications/my.desktopQtopia/qtopia-free-1.7.0/apps/Applications/ 添加库 cp$QPEDIR/lib/libqpe.so.* Qtopia/qtopia-free-1.7.0/lib/ 添加程序 cp helloQtopia/qtopia-free-1.7.0/bin cd ..

 

langxing0508 - Mon, 26 Mar 2007 13:28:19 GMT

交叉编译QTE源码包

概述: QT程序的移植过程主要是程序的编辑和交叉编译QT程序.交叉编译QT程序时需要交叉编译好的QTE库.本文主要针对于GEC2410开发板,在PC机端交叉编译QTE的源码包,从而得到交叉编译的QTE库.;在PC机上调试好QTE程序后,需要把QTE程序移植到ARM平台上. 移植最重要的环节是交叉编译QTE程序.;1 交叉编译QTE库 exportPATH=/usr/local/arm/3.3.2/bin:$PATH cd /home/build_qte/ tar zxvfqt-embedded-2.3.7.tar.gz ;在/usr目录下解压qt-embedded-2.3.7.tar.gz源码包 mvqt-2.3.7 qt-2.3.7-arm cd qt-2.3.7-arm.

 

langxing0508 - Wed, 18 Apr 2007 16:58:38 GMT

qte环境建立 (PC机的虚拟帧缓冲)

建立shell文件,设置环境变量 vi set-qte-x86.sh ;在文件中添加如下#!/bin/bash export QTDIR=/home/build_qte/qt-2.3.7-x86 ;编译qt-2.3.7的目录export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH exportTMAKEDIR=/home/build_qte/tmake-1.11 ;tmake-1.11的目录 exportTMAKEPATH=$TMAKEDIR/lib/qws/linux-x86-g++ exportPATH=$QTDIR/bin:$TMAKEDIR/bin:$PATH echo $PATH ;保存退出 ;先不要执行sourceset-qte-x86.sh (不要设置环境变量)

 

langxing0508 - Mon, 26 Mar 2007 13:07:07 GMT

Linux程序应用开发环境和工具经验谈

Linux程序应用开发环境和工具经验谈。glade:开发gtk/gdk程序的图形工具,能完成界面的编辑(这比用VI做界面好10^n 倍,本人曾经用vi以每天2000行程序的速度写过gtk的应用,整整写了一个月,后来用glade用重来,一周就完成了)designer:开发qt/x11程序的图形工具,能完成界面的编辑,也可以开发qt/embedded的程序。3.embedded程序员 c/c++ +qt/embedded + HHL.5.像我这样什么都会的天字号 c/c++ + qt/X11/embedded + designer +gtk/gdk +glade + source navigator + gdb + ddd + bdm + turbolinux + HHL.

 

zvane - Sun, 18 Mar 2007 09:20:25 GMT

4-3 读取和保存(Loading and Saving)

4-3 读取和保存(Loading andSaving)我们使用QFile和QDataStream来实现Spreadsheet文件的保存和读取。最好把它们转换为qint8,quint8,qint16,quint16,qint32,quint32,qint64,quint64,这些类型能确保字长是不随平台改变的。数据类型的二进制表示由类QDataStream决定。在未来的Qt版本中还可能有更多的改变,QDataStream使用最近的Qt版本,但是它可以读取以前的版本。为了程序用新的Qt版本重新编译后能够更好的兼容,我们显式的给出QDataStream使用的版本为7(QDataStream::Qt_4_1定义为常量7)QDataStream可以支持多种类型。

 

暳彼小星 - Thu, 15 Mar 2007 21:45:52 GMT

主流嵌入式Linux系统下GUI解决方案

事实上我们要设计的视窗当然不可能是这样一点一点地画上去的,这样太过浪费时间,基于这种观念我们就设计出高阶一点的函数来帮助我们解决这个繁琐的步骤,例如各类视窗编程里用到的画点、画线、画矩形、画圆形、画不规则形、上色等函数。●Window Manager 有了Toolkits,我们可以很轻松地建立视窗模块(XClient),但是每个视窗模块只负责自己模块内的事务,那么不同视窗间的沟通、协调,例如视窗的切换、放大、缩小等,就没有模块管理了,于是视窗管理员(Window Manager)就应运而生了。

 

- Thu, 15 Mar 2007 00:00:00 GMT

嵌入式Linux系统中应用的GTK+和X分析

1 2 3 4 下一页 在嵌入式 Linux 下有很多图形界面系统 GUI,包括Qt/Embedded,FLTK,MicroWindows 和 GTK+ 等。选择 GTK+ 运行在 X 系统上,然后 X 系统运行在嵌入系统的framebuffer 上,这会是一个很好的选择。GTK+ 与 X 的优点当然,GTK+ 与 X一般都是被大家考虑为体积较大的桌面系统的好搭配,但实际上对于嵌入系统来说,它也有着诸多的优点:1、 X-window 系统与 GTK+都非常稳定可靠,X-window 系统是经历了长期的开发及应用实践的,GTK+ 也是一个比较成熟的开放源代码项目。

 

- Thu, 15 Mar 2007 00:00:00 GMT

精华推荐:让Linux“开口”讲英语

但是,要执行此文件还要将库文件xdict.lib和索引文件xdicten.idx拷贝目录/usr/lib/ xdict下: # mkdir -p/usr/lib/xdict 找到xdict.lib和xdicten.idx拷贝目录/usr/lib/xdict下: #cp xdict.lib xdicten.idx /usr/lib/xdict(5)启动X-Window并运行xdict:   # startx   #./xdict在此简单介绍一下QT。在xdict.cpp中有这些函数的详细结构,下面仅简要分析初始化函数xdict(),如图2所示。要使字典发音,只需在输入单词回车后,在显示单词汉字译文的同时调用发音函数,即在xdict.cpp中的按下回车键处理函数中添加eciSpeakText函数即可。

 

- Thu, 15 Mar 2007 00:00:00 GMT

Qt源码分析之QPointer

QPointer只是一个简单的模板,对QMetaObject的相关操作做了简单的封装,这里的基本思想是在QPointer构造的时候调用QMetaObject::addGuard(&o),把T的指针加入QMetaObject内的一个哈希表中,在QPointer析构的时候调用QMetaObject::removeGuard(&o),把T的指针从哈希表中删除这是一个QMetaObject中静态成员,该哈希表的定义如下:typedef QMultiHash GuardHash;这个哈希表存储的是指针的值和指针的地址,因此加入的代码如下:voidQMetaObject::addGuard(QObject **ptr){GuardHash *hash = guardHash();

 

oowgsoo - Thu, 15 Mar 2007 11:08:12 GMT

Qt源码分析之信号和槽机制

在这里我们看到了静态成员staticMetaObject被填充了 constQMetaObject*superdata;//这是元数据代表的类的基类的元数据,被填充为基类的元数据指针&QAbstractButton::staticMetaObject const char*stringdata;//这是元数据的签名标记,被填充为qt_meta_stringdata_QPushButton const uint*data;//这是元数据的索引数组的指针,被填充为qt_meta_data_QPushButton const QMetaObject **extradata;//这是扩展元数据表的指针,一般是不用的,被填充为0.if (qt_signal_spy_callback_set.signal_begin_callback !

 

oowgsoo - Thu, 15 Mar 2007 11:09:10 GMT

 

顶端 Posted: 2007-05-21 11:48 | 1 楼 

 keisuo

  

 

 

 

 

 

 

 

 

Qt通常在paintEvent()调用之前擦除这个窗口部件的区域。仅仅只有在WRepaintNoErase窗口部件标记被设置的时候,窗口部件本身对绘制它所有的像素负有责任。

 

 

 

void QWidget::repaint ( int x, int y, int w, int h, bool erase = TRUE ) [槽]

通过立即调用paintEvent()来直接重新绘制窗口部件,除非更新是失效的或者窗口部件被隐藏。

 

如果erase为真,Qt在paintEvent()调用之前擦除区域(x,y,w,h)。

 

如果w是负数,它被width()-x替换,并且如果h是负数,它被height()-y替换。

 

如果你需要立即重新绘制,我们建议使用repaint(),比如在动画期间。在绝大多数情况下,update()更好,因为它允许Qt来优化速度并且防止闪烁。

 

警告:如果你在一个函数中调用repaint(),而它自己又被paintEvent()调用,你也许会看到无线循环。update()函数从来不会产生循环。