qt自定义控件如何在QDesigner的右侧属性框里面加自定义下拉框

wfr666 2015-04-10 09:17:23
教大牛,我做了个自定义控件,继承自QDesignerCustomWidgetInterface的那种控件,实现这个类的一些方法,可以在Qt设计师里用,效果如图:



想对这个控件做一个可枚举的动态属性,效果就像图中选鼠标样式的这种,一点下拉出所有项,从中选一个的效果,而直接定义枚举后用的话,在Qt设计师里就认成了数值,不是字符串,我的做法是:
在插件类中是这样加的:
enum MyEnum {L = 1, M, R};
class WindPlate : public QWidget
{
Q_OBJECT
Q_PROPERTY(MyEnum m_myEnum READ getMyEnum WRITE setMyEnum)
Q_ENUMS(MyEnum)

public:
WindPlate(QWidget *parent = 0);
void setMyEnum(MyEnum e){ m_myEnum = e ; }
MyEnum getMyEnum(){return m_myEnum ; }

MyEnum m_myEnum;
};
在类的构造函数中加入:
setProperty("m_myEnum", 1);
setProperty("zhang", m_myEnum);
可是编译生很顺利,无语法错误,成DLL文件后,加入QT指定插件目录后,在Qt设计师中,还是把枚举值认成了数值,如下图:



那请教大神,要在Qt设计师中,右下角控件的属性区域中,加入下拉框出现枚举字符串的效果应该怎么实现?
...全文
1377 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
feiyangqingyun 2017-11-25
  • 打赏
  • 举报
回复
不知道这位仁兄,自定义控件属性中文显示,是怎么做到的?可否提示一下!
zyq5945 2015-04-10
  • 打赏
  • 举报
回复
MyEnum写在类里面试试。
dext 2015-04-10
  • 打赏
  • 举报
回复
第一个 很难。第二个不可能。 想说为什么不可能,因为 类的静态成员本来就是属于某一个类的,而不是可定对象的。 第二个,需要 手动修改moc_XXX.h 甚至是 修改moc的代码,所以说也是很难。
wfr666 2015-04-10
  • 打赏
  • 举报
回复
写在类里的效果是这样的:



虽然实现了枚举,但是还是不是我想要的效果,有两点还做不到,一个是不支持中文显示,另一个是静态属性一个控件更改会,会把其它同类控件的属性值都改成一样的了,这两点有办法解决吗?谢谢!

16,216

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧