• 6146阅读
  • 6回复

QtCreator的两个问题 [复制链接]

上一主题 下一主题
离线suxiaochen
 
只看楼主 正序阅读 楼主  发表于: 2009-07-28
环境:Redhat 企业版5.0,Qt4.5,QtCreator 1.2。

问题一:新建一个QT QUI,比如名为:testdemo,然后在项目文件夹(XXXXX/testdemo)下面,新建一个headfiles文件夹,里面放一些头文件,然后通过QtCreator 的“add existing files...”功能,把这些头文件导入到工程,这时候可以看见.pro文件中有对应的变化,加入的头文件的路径是这样表示的:/headfiles/XXXX.h。现在编译程序,报错:无法找到“/headfiles/XXXX.h”头文件。

请问:是不是自动在.pro里面生成的头文件路径有误,需要修改一下,那么应该怎么改呢?(不想总是把一堆不相干的头文件也放在同一层目录下......)



问题二:关于自定义信号和槽的问题。还是新建那个testdemo项目,添加一个C++ class,继承于QObject,叫MyTest,该类包含一个方法,“runTest”。在界面上拖放一个按钮,一个Label,现在想要的效果是:单击按钮,按钮中调用mytest.runTest()(类MyTest的一个实例),然后再runTest中,发送一个自定义的信号比如说是:
SIGNALS:
     void Mysignal(QString str);

然后希望Label能够接收这个信号,并把字符串显示出来(QLabel::setText)。

现在的问题是:这个自定义信号应该写在MyTest里面还是界面类里面。如何使用槽来连接这个信号使QLabel显示信息。如何写QObject::connect(......)这关键的语句?


希望高手指点,多谢!
离线jorneyr

只看该作者 6楼 发表于: 2009-07-29
离线dbzhang800

只看该作者 5楼 发表于: 2009-07-29
至于你的问题二,我还是不清楚你那个地方遇到困难了,很简单的问题,估计你哪个地方想到岔路去了
离线dbzhang800

只看该作者 4楼 发表于: 2009-07-29
猜一下:你的其他文件内引用头文件用的是  #include "XXXXX.h" 吧,如果是的话,改为 #include "/home/XXX/XXX/XXXX.h" 肯定就没问题了

当然我们一般不会这么做,在你的 .pro 文件内加一行就好

INCLUDEPATH += /home/XXX/XXX
离线suxiaochen
只看该作者 3楼 发表于: 2009-07-28
引用第2楼dbzhang800于2009-07-28 19:28发表的  :
一。如果你的描述没错的话,确实是生成的路径有误。
       既然你发现这个问题了,直接把路径改成正确的不就行了?
二。你写的MyTest类发信号,当然写在你这个类里面。
.......


问题一:我试着把路径改为完整的路径“/home/XXX/XXX/XXX”,但是还是报错,但是一旦放到testdemo项目目录下面,然后,pro里面就直接+= 头文件名,这样就不错了,可是我想要把一些头文件放在一个文件夹里面啊,这样为什么不行呢?

问题二:那就换个说法吧,界面上有一个按钮,按一下,执行代码:myText.runText();然后在runText函数里面,有一个QString mesStr变量,我想在runText中通过发送信号的方法,使得界面上某个控件可以接收到,并把这个mesStr显示出来。
离线dbzhang800

只看该作者 2楼 发表于: 2009-07-28
一。如果你的描述没错的话,确实是生成的路径有误。
       既然你发现这个问题了,直接把路径改成正确的不就行了?

二。你写的MyTest类发信号,当然写在你这个类里面。

QObject::connect()按格式直接写就好了。目前看不出你程序中者两个类什么关系。
离线jorneyr

只看该作者 1楼 发表于: 2009-07-28
/headfiles/XXXX.h。现在编译程序,报错:无法找到“/headfiles/XXXX.h”头文件。
明显的路径不对. 难道人的头文件真是放在/ 下面?

Label是不能处理这个信号的, 除非你继承一个QLabel来实现.
你要在MyTest的runTest()中发射一个信号, 然后在另一个类, 如Label所在的那个类中实现一个slot(糟), 与这个信号连接起来.
在那个类中:
connect(myTestObj, SIGNAL(aSignal()), this, SLOT(aSlot()));
这样, 当你在runTest中发射信号aSignal()后, 糟aSlot()就会被调用.
快速回复
限100 字节
 
上一个 下一个