将近两个月的QT开发,写一些积累
首先是QT desinger的使用,用desinger来画
界面,生成一个.ui文件,在以前的版本中都可以用uic命令来得到.h和.cpp文件,但是在QT4中只能得到.h文件,.cpp文件要自己写.以前的命令是uic -o *.h *.ui生成.h文件,用uic -i *.h -o *.cpp *.ui来生成.cpp文件,但是现在只能用前一个命令来生成ui_*.h文件,剩下的*.h和*.cpp文件要自己写,main.cpp也得自己写,别人怎么写,自己照着写就好!
做好界面之后就该在.cpp里面添加功能函数了。
主要的就是connect连接的singal和slots。这是QT的一个新的概念,和VC里的消息相应挺像的。文档里介绍了三种方法,其实直接自己写就好,根据自己的需要,根据QT类中提供的singal和slots,有需要的就直接调用,没有需要的就自己写,在定义singal和slots的时候要注意一般都定义为private slots(singal)。定义为私有的,而且别忘了加slots和singal关键字,如果不加这个关键字,它只是一个函数而不是信号或者槽了,在CONNECT的时候就没法调用。
在定义信号和槽的时候还可以使用QMetaObject::connectSlotsByName(this);自动连接以名字命名的SLOTS,比如on_pushButton_clicked(),这样就不用定义connect了,当点击pushButton的时候,就可以自动的连接这个SLOTS了。很方便的。
有了以上的两个步骤,就基本上可以做出基本的界面程序了,即有了界面也有了消息相应。
下面介绍一下我用过的几个类,一个主要的就是Model/View。很多界面都要用到这个类型。Model用来获取数据和底层交互,而View用来显示Model所获得的信息,将它
显示出来。要显示文件系统就用QDirModel+QTreeView类,应该也可以用QDirModel+QTreeWidget但是没有试过!呵呵!
View类有QTreeView,QTableView,QListView,Model类现成的不是太多,可以根据自己的需要来写,具体文档中有介绍如何编辑自己的MODEL。接下来就要多显示的东东进行操作,对于托放在文档中有专门的介绍,这里涉及了一个我以前没用过的类型MIMI类型。托放的时候不同的部件之间接受的数据是用这个类型定义的,统一接收这个类型的数据,可以用QString和她一起使用。具体实现托放在文档中使用直接搜索drag and drop就好。
但是我不想使用托放的方法来传递数据,我想用按钮来实现,当点击按钮的时候传递数据,在QDirModel中,当点击的时候可以获取index。connect(ui.treeView,SIGNAL(clicked(QModelIndex &) ),ui.treeView,SLOT(setCurrentIndex(QModelIndex &))。当点击Tree时,获取当前点击的INDEX,然后 QFileInfo fi3;fi3=model->fileInfo(inde);就可以获取到当前点击的文件的文件信息了。这个东东我是绕了好大一圈之后才弄明白这样使用的!唉!浪费了好多时间。
以上主要是Model/View的使用。
接下来我遇到的问题是使用QTableWidget,它的使用要比QTableView使用起来方便多了,因为他是继承的QTableView。它的使用直接看这个类就好,不难的。
我又遇到的一个问题是设置进度条,setValue()里面的数值设置,现设置最大值setRange(0,max),然后在setValue()里填上比MAX小的数值即可,它会自己计算%的。
我还用到了QFile类,这个类是实现对文件的操作的。详细的就不多说了,难度都不大!
以上是两个月来,从学习到开发程序,对于在使用QT时,遇到的一些问题,希望能够对刚刚使用的新手有一点帮助吧。
可能我写的会有不对的地方,毕竟一下子也回想不起来太全面,:)希望高手能给指正!!!