Qt自定义控件

参考:

https://www.cnblogs.com/georgeOfChina/p/7773141.html

Qt实现自定义控件能够以插件的方式加载到Qt设计师_qt自定义控件-CSDN博客

 

1、打开QtCreator,这里使用的是Qt5.10.1+MSVC2015_32位的环境。

新建项目,其他项目->Qt4设计师自定义控件->设置类名Test【大写开头】,确定,此时无ui文件

2、删除Test.h和Test.cpp,右键工程添加Qt->Qt设计师界面类,选择Widget模板,改名字为Test,此时就有ui文件了

3、代码初始化

在Test.h中添加头文件

#include <QtUiPlugin/QDesignerExportWidget>

在类名前面加上QDESIGNER_WIDGET_EXPORT宏

4、打开ui文件,设计想要的界面

 

这里拖入3个checkbox,功能是1勾选上2,3也勾选,1不勾选2,3也不勾选

5、代码实现

进入第一个checkbox的clik回调

void Test::on_checkBox_clicked()
{
    if(ui->checkBox->isChecked())
    {
        ui->checkBox_2->setChecked(true);
        ui->checkBox_3->setChecked(true);
    }
    else
    {
        ui->checkBox_2->setChecked(false);
        ui->checkBox_3->setChecked(false);
    }
}

6、编译,在对应的文件夹生成testplugin.dll和testplugin.lib

7、得到最后的文件

testplugin.dll、

testplugin.lib、

test.h

 

如何使用呢?

1、把testplugin.dll放在Qt库路径下

D:\Qt5.10.1\5.10.1\msvc2015\plugins\designer

2、使用对应版的designer工具新建工程,可以看见ui中有了Test控件

 注意:需要对应版本的

3、把这个控件拖到界面就ok了

 

注意:

1.以上方法只能通过对应版本的designer打开ui才有新控件,使用QtCreator打开是没有的,需要编译QtC版本的Qt重新编译,然后放在:

D:\Qt5.10.1\Tools\QtCreator\bin\plugins\designer路径下QtC才支持控件。可通过点击“工具”—>“Form Editor"—>”About Qt Designer Plugins“,查看其他控件的加载情况

 

2.在自定义控件构造函数里通过qss设置背景色时,在使用控件工程失效;需要重写paintEvent里通过QPainter重绘才生效

 

3.只需要将dll放在D:\Qt5.10.1\5.10.1\msvc2015\plugins\designer,不需要放啥lib,打开designer就能打开;

使用的话,才需要放,当然如果自己在pro里使用也不需要。

posted @ 2019-06-09 16:03  朱小勇  阅读(6842)  评论(0)    收藏  举报