• 9177阅读
  • 7回复

[提问]有没有人尝试分离使用Qxt的类?咱菜鸟的尝试很无力啊…… [复制链接]

上一主题 下一主题
离线roywillow
 

只看楼主 倒序阅读 楼主  发表于: 2011-04-24
前几天看到了Qxt中QxtGlobalShortcut从Qxt类库中分离出来使用的方法,于是就想尝试将QxtBaseSpinBox分离出来使用(因为实在是懒得装那个库了……),仿照着(确实是仿照着,因为菜鸟一个……)GlobalShortcut的pri写了个自己的pri,然后也include到了pro中,结果编译的时候大吃一惊……
出来了大批的类似“warning: 'QxtBaseSpinBox::QxtBaseSpinBox(QWidget*)' redeclared without dllimport attribute: previous dllimport ignored”、“warning: 'virtual QxtBaseSpinBox::~QxtBaseSpinBox()' redeclared without dllimport attribute: previous dllimport ignored”的信息,但是这些信息在第二次编译的时候就没了……
之后还有大批的类似“undefined reference to `_imp___ZN14QxtBaseSpinBox11baseChangedEi'”、“undefined reference to `_imp___ZN14QxtBaseSpinBoxC1EP7QWidget'”的“经典”错误……
于是彻底茫然了……谁能告诉我我少做了什么……

另外pri文件这么写的(绝对的依葫芦画瓢):
INCLUDEPATH += $$PWD
DEPENDPATH += $$PWD

HEADERS += $$PWD/qxtglobal.h \
           $$PWD/qxtbasespinbox.h
SOURCES += $$PWD/qxtbasespinbox.cpp

两个.h和一个.cpp都在同级目录
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线wxj120bw

只看该作者 1楼 发表于: 2011-04-24
引用楼主roywillow于2011-04-24 00:01发表的 有没有人尝试分离使用Qxt的类?咱菜鸟的尝试很无力啊…… :
前几天看到了Qxt中QxtGlobalShortcut从Qxt类库中分离出来使用的方法,于是就想尝试将QxtBaseSpinBox分离出来使用(因为实在是懒得装那个库了……),仿照着(确实是仿照着,因为菜鸟一个……)GlobalShortcut的pri写了个自己的pri,然后也include到了pro中,结果编译的时候大吃一惊……
出来了大批的类似“warning: 'QxtBaseSpinBox::QxtBaseSpinBox(QWidget*)' redeclared without dllimport attribute: previous dllimport ignored”、“warning: 'virtual QxtBaseSpinBox::~QxtBaseSpinBox()' redeclared without dllimport attribute: previous dllimport ignored”的信息,但是这些信息在第二次编译的时候就没了……
之后还有大批的类似“undefined reference to `_imp___ZN14QxtBaseSpinBox11baseChangedEi'”、“undefined reference to `_imp___ZN14QxtBaseSpinBoxC1EP7QWidget'”的“经典”错误……
于是彻底茫然了……谁能告诉我我少做了什么……
.......

从Qxt分离QxtBaseSpinBox代码 你是单独编译的吗 把编译文件的命令贴下吧 就是编译的时候终端打印编译命令
离线dbzhang800

只看该作者 2楼 发表于: 2011-04-24
呵呵,看来是被我这个博客害的:Qt 全局热键 QxtGlobalShortcut 分析与使用举例

可以看出,你是在windows下用的,问题改起来很简单。但我不想继续误导大家了。这么分离库中的类应该不是好主意。特别是你这儿提到的可设置Base的SpinBox,即使自己写一个都很简单(C++ GUI Qt4 编程一书中就有几乎现成的例子)。

题外:
既然提到pri文件了,我就贴一下这个吧:浅谈 qmake 之 pro、pri、prf、prl文件
离线roywillow

只看该作者 3楼 发表于: 2011-04-24
嘛,确实是看了那个shortcut之后才有这种想法的
不过咱自己之后写了个取色器的类然后用pri挺顺利地就用到别的代码中了
不过还是很好奇该怎么正确的分离,因为就我目前的需求来看,我也就只用到shortcut和spinbox……
自己写base spinbox嘛,我确实是写过,并且也确实是跟着那本书写的,但是发现设置前缀的时候会出来一些很莫名其妙的bug,然后我又不知道该从什么地方入手debug,所以就放在那懒得动了,然后每次需要用的时候都得根据情况重新修改一下代码让bug在当前的情况下消失……
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线roywillow

只看该作者 4楼 发表于: 2011-04-24
回 2楼(dbzhang800) 的帖子
求帮助啊求帮助
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线dbzhang800

只看该作者 5楼 发表于: 2011-04-24
去掉类定义的  QXT_GUI_EXPORT  !
离线roywillow

只看该作者 6楼 发表于: 2011-04-24
〇///〇
谢谢……
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线radium_sql

只看该作者 7楼 发表于: 2011-04-24
留做记号。
QT什么时候替代MFC?
快速回复
限100 字节
 
上一个 下一个