第一次尝试编写一个继承于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下