2016-02-27 197 views
1

在Qt Creator UI Designer中,可以用其子类替换小部件。我创建的QComboBox模板子类:用Qt Creator Designer中的自定义模板小部件替换小部件

template <typename T> 
class MappedComboBox : public QComboBox 
{ 
    // ... 
}; 

而且我已经成功地管理与MappedComboBox<int>更换QComboBox。然而更换QComboBox小部件,例如,MappedComboBox<QSerialPort::BaudRate>由于依赖性错误,失败,同时建立类似

“QSerialPort”在此范围内未声明。

Qt Designer screenshot

当然一个办法摆脱他们的是包括QSerialPortmappedcombobox.h然而,这不是一个非常优雅的方式。我可以以某种方式告诉Qt Designer在生成UI时添加其他文件吗?

+1

尝试在Qt设计师在促进对话框检查 “全局” 复选框。并在标题行编辑写入qserialport.h。 – Radek

+0

@Radek好主意,但似乎没有工作。 – Rames

+0

Qt moc不支持所有用完问题的模板类。尝试继承你的小部件的确切类型:'MappedIntComboBox:public MappedComboBox < int >'; –

回答

0

在UI设计器中,没有办法添加额外的标头。更好的解决方法是在包含生成的头文件之前将其包含在设计器类的cpp文件中。这比在包含与该标题无关的MappedComboBox中更好。

在mainwindow.cpp:

#include "mainwindow.h" 
#include <QSerialPort> 
#include "ui_mainwindow.h"