Qt Creator自定义控件,添加至设计师界面内所遇到的问题

QtCreator新建并使用自定义控件类


文章目录

  • QtCreator新建并使用自定义控件类
  • 前言
  • 一、如何创建一个自带属性的控件?
    • 1.自定义需要包含什么?
    • 2.如何添加属性?
  • 二、自定义控件编译遇到的问题
    • 1.Qt Designer中找得到生成的自定义控件,但Qt Creator找不到
      • 为什么路径对了,却依然没有什么反应?
    • 2.新建项目添加自定义控件编译出现的问题
      • 头文件和库文件的包含
  • 总结


前言

由于新建自定义控件类的方法随处可查,本文将着重描述添加自定义控件类以及使用时遇到的问题和解决方法。


以下是本篇文章正文内容,下面案例可供参考

一、如何创建一个自带属性的控件?

1.自定义需要包含什么?

首先必须包含的是#include ,在class后必须添加QDESIGNER_WIDGET_EXPORT,例如:class QDESIGNER_WIDGET_EXPORT LineProgressBar : public QWidget

2.如何添加属性?

Qt可以利用Q_PROPERTY宏来给控件添加属性,而且这种方法添加的属性如果将该自定义控件添加到设计师界面中,可以直观地看到它的属性并修改,如图:
在这里插入图片描述
代码如下:

    Q_PROPERTY(QColor lineColor READ getLineColor WRITE setLineColor)
    Q_PROPERTY(QColor textColor READ getTextColor WRITE setTextColor)
    Q_PROPERTY(QColor titleColor READ getTitleColor WRITE setTitleColor)

Q_PROPERTY中直观的说,需要类型变量、返回函数、设置函数,但并不是这样就完事了,我们还需要具体声明一下:

private:
    QColor lineColor;
    QColor textColor;
    QColor titleColor;
public:
	QColor getLineColor() const
    {
        return this->lineColor;
    }

    QColor getTextColor() const
    {
        return this->textColor;
    }

    QColor getTitleColor() const
    {
        return this->titleColor;
    }
 
 public slots:
    void setLineColor(QColor lineColor)
    {
        this->lineColor = lineColor;
    }
    void setTextColor(QColor textColor)
    {
        this->textColor = textColor;
    }
    void setTitleColor(QColor titleColor)
    {
        this->titleColor = titleColor;
    }

这样就可以自由地发挥想象,随心所欲地添加我们想要的属性了。

二、自定义控件编译遇到的问题

1.Qt Designer中找得到生成的自定义控件,但Qt Creator找不到

自定义控件编写完成后,先执行qmake,然后编译生成dll与lib文件,切记使用release编译,然后把dll和lib文件复制到Qt安装目录中的designer文件夹中,相信很多朋友照着这个方法按部就班的操作,却怎么也没有成功,或者像我一样只成功了一半,但是由于工作习惯很少单独打开Qt Designer开发,所以于我而言似乎这一半的成功并无卵用。于是用同样的方法让Qt Creator也能像Qt Designer一样,结果遇到了各种各样的问题…

为什么路径对了,却依然没有什么反应?

我把生成的dll和lib文件复制到Qt Creator中的designer里,即D:\Qt\Qt5.12.10\Tools\QtCreator\bin\plugins\designer,重新打开Qt并新建项目却并没有找到自定义控件,网上查了查说QtCreator版本和Qt编译器版本不同导致,我用的Qt5.12.10,而QtCreator是4.13.1,且基于Qt5.15.1,需要的编译器是MSVC2019 32bit:
Qt Creator自定义控件,添加至设计师界面内所遇到的问题_第1张图片
关于Qt的这些版本问题我不是很懂,如果有看到这篇文章的大佬明白请指教一下我。我的解决方法是先安装了MSVC2019 32bit,然后重装这个版本的Qt时发现并没有MSVC2019的组件,于是我想尝试下手动设置编译器,自己添加一个MSVC2019 32bit总可以吧。网上也没有这方面的教程,我只能自己一顿操作猛如虎,最后居然糊里糊涂的添加成功了,这一部分内容偏多,我会另写一篇文章描述。
使用msvc2019 32bit的编译器重新编译自定义控件生成dll、lib文件,并重新添加至上述文件夹后,重启Qt打开ui界面,这一步终于成功了!
Qt Creator自定义控件,添加至设计师界面内所遇到的问题_第2张图片

我兴奋的把控件拖拽到页面中,点击运行结果又出现了新的问题…

2.新建项目添加自定义控件编译出现的问题

头文件和库文件的包含

在这里插入图片描述解决方法:把自定义控件的.h文件和.lib文件放到项目目录里,我新建了两文件夹:include和lib文件放置,在项目.pro文件中添加路径和库,要记得执行qmake,然后运行就成功了,切记用与编译自定义控件相同的编译器,一定要用release!

总结

以上就是本人在利用Qt Creator添加自定义控件时遇到的问题,不是全部,文章是在问题解决后写的,有一些恼人的问题无法确定具体原因,也没有办法复现了,所以只能写这么多了,总之,遇到bug不要怕,只要备份好代码,按照自己的思路一顿操作就行,实践出真理嘛。
加油啦和我一起努力的你们。

你可能感兴趣的:(Qt控件自定义,Qt学习记录,Qt项目积累,qt)