打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
QT创建自定义窗口部件
QT创建自定义窗口部件
2011年07月22日 星期五 10:58

   自定义部件: Qt Designer可以使用插件机制来显示自定义部件. 可以将自定义部件集成到Qt Designer

                中, 有两种方法可以进行集成:

            提升控件(Promote to..):  在Qt Designer中设计窗口时,可以使用控件占位符来代替自定义控件.

                    将一个和自定义控制最接近的控件,通常为自定义控件所继承的QT标准控件, 如果没有合适的可

                    以使用QWidget做通用替代. 然后在占位控件的右键菜单上选择"Promote to"提升为自定义控

                    件. 在弹出的窗口中设置自定义控件的类名和要包含的头文件就行了. 提升法的却点是不能在

                    QT Designer中设置控件特有的属性和绘制自己.

            插件法: 要在Qt Designer中使用控件插件, 需要一个继承自QDesignerCustomWidgetInterface

                    的类并实现相应的方法的控件构造器. 然后将控件和构造器创建为动态库. 插件编辑好后放到

                    Qt Designer的插件目录就能在Designer中使用了. 也可以使

                    用QDesignerCustomWidgetCollectionInterface一次性创建多个控件的信息.这里面要注意

              的是domXml()函数, 这个函数需要返回一个.ui文件的片段来告诉QT Desiger创建自定义控件

              的一些信息;

              插件需求: 要使插件能在所有的平台下都能工作, 插件需要导出一些Qt Designer需要的符号,

                        首先就使用Q_EXPORT_PLUGIN2()宏声明插件的名字和类, 然后每一个插件类都要在声明

                        中使用QDESIGNER_WIDGET_EXPORT宏

创建自定义控件插件

        要使自己的控件向QT原生控件样能在Qt Designer中使用, 需要做如下的工作:

#include <QtDesigner/QDesignerExportWidget>                          //包含头文件

class QDESIGNER_WIDGET_EXPORT MyWidget : public QWidget     //声明自己的控件类控制的实现

{...}                                                                                  //根普通的一样

        在定义一个插件类来包装我们的控件:

//文件文件MyWdigetPlugin.h

#include <QDesignerCustomWidgetInterface>

class MyWidgetPlugin: public QObject ,public  QDesignerCustomWidgetInterface

{

     Q_OBJECT

     Q_INTERFACES(QDesignerCustomWidgetInterface)             //声明这是一个插件的实现

...

}

//然后在MyWidgetPlugin.cpp中实现QDesignerCustomWidgetInterface中的接口函数就行了

        注: 要使Qt Designer能加载插件, 必须以release编译, 然后将库复制到QT安装目录的plugins/designer下;

            不知为何, 控件用ui文件自动创建的,不能在Designer中显示出自定义控件的内容,而在paintEvent事件中使用QPainter直接绘制的,或在构造函数中动态创建的则都能显示.原因已找到,是因为没有调用setupUi().

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
QT中自定义槽的方法,众人说法的集锦[转]
Qt自定义控件
QT 内建控件概览
Qt
Qt编写自定义控件7-自定义可拖动多边形
Python语言编程系列007----PyQt中自定义控件之颜色指示选择框
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服