首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > QT开发 >

designer无法加载自定义部件,该如何处理

2012-01-14 
designer无法加载自定义部件第一次尝试编写一个继承于QLineEdit的自定义部件,实现一些其他的功能,能编译通

designer无法加载自定义部件
第一次尝试编写一个继承于QLineEdit的自定义部件,实现一些其他的功能,能编译通过并在designer的插件文件夹生成so文件,但是designer中无法加载,网上的帖子千篇一律的都是转载的C++ Qt那本书上第五章的内容,不知道问题出在哪,高手帮忙看看

pro文件

C/C++ code
TEMPLATE = libCONFIG       += designer plugin releaseHEADERS += myeditplugin.h \           myedit.hSOURCES += myeditplugin.cpp \           myedit.cppDESTDIR       = $$[QT_INSTALL_PLUGINS]/designerTARGET = myEdit


插件的头文件myeditplugin.h
C/C++ code
#ifndef MYEDITPLUGIN_H#define MYEDITPLUGIN_H#include <QDesignerCustomWidgetInterface>class MyEditPlugin : public QObject,                     public QDesignerCustomWidgetInterface{    Q_OBJECT    Q_INTERFACES(QDesignerCustomWidgetInterface)public:    MyEditPlugin(QObject *parent=0);    QString name() const;    QString includeFile() const;    QString group() const;    QIcon icon() const;    QString toolTip() const;    QString whatsThis() const;    bool isContainer() const;    QWidget *createWidget(QWidget *parent);};#endif // MYEDITPLUGIN_H


插件的实现文件myeditplugin.cpp
C/C++ code
#include "myeditplugin.h"#include "myedit.h"#include <QtPlugin>#define ICON_PATH "/opt/QtDesktop/image/qt_myEditPlugin/"MyEditPlugin::MyEditPlugin(QObject *parent)    :QObject(parent){}QString MyEditPlugin::name() const{    return "myEdit";}QString MyEditPlugin::includeFile() const{    return "myedit.h";}QString MyEditPlugin::group() const{    return tr("My Widgets");}QIcon MyEditPlugin::icon() const{    return QIcon(ICON_PATH + QString("myEditPluginIcon.png"));}QString MyEditPlugin::toolTip() const{    return tr("Can use systemkeyboard");}QString MyEditPlugin::whatsThis() const{    return tr("");}bool MyEditPlugin::isContainer() const{    return false;}QWidget *MyEditPlugin::createWidget(QWidget *parent){    return new MyEdit(parent);}Q_EXPORT_PLUGIN2(myEditPlugin,MyEditPlugin)


我自定义的继承于QLineEdit的头文件myedit.h
C/C++ code
#ifndef MYEDITPLUGIN_H#define MYEDITPLUGIN_H#include <QDesignerCustomWidgetInterface>class MyEditPlugin : public QObject,                     public QDesignerCustomWidgetInterface{    Q_OBJECT    Q_INTERFACES(QDesignerCustomWidgetInterface)public:    MyEditPlugin(QObject *parent=0);    QString name() const;    QString includeFile() const;    QString group() const;    QIcon icon() const;    QString toolTip() const;    QString whatsThis() const;    bool isContainer() const;    QWidget *createWidget(QWidget *parent);};#endif // MYEDITPLUGIN_H


实现文件myedit.cpp应该不是问出问题的地方,在别的程序中已经测试通过了,就不贴出来了
qmake make过后生成了so文件
C/C++ code
mv -f libmyEdit.so /usr/local/Trolltech/QtEmbedded-4.4.3/plugins/designer/

但就是无法加载,第一次闹这东西,实在是找不到问题出在哪了,高手指点啊


[解决办法]
看在都在qt群里,我帮你顶一个,虽然我也不会,哈哈
[解决办法]
理论上,已经指定了
DESTDIR = $$[QT_INSTALL_PLUGINS]/designer

make之后,在designer下会自动生成

你为什么要:
mv -f libmyEdit.so /usr/local/Trolltech/QtEmbedded-4.4.3/plugins/designer/

QtEmbedded-4.4.3让我很疑惑,如果你需要在板子上也跑起来你的控件的话,也必须将此so拷贝至板子的对应目录qt lib下

热点排行