在Qt Creator Designer中用自定义模板小部件替换小部件

时间:2016-02-27 16:12:16

标签: c++ qt qt-creator

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

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

我已成功设法将QComboBox替换为MappedComboBox<int>。但是,例如,将QComboBox小部件替换为MappedComboBox<QSerialPort::BaudRate>会由于依赖性错误而失败,同时构建类似

  

'QSerialPort'未在此范围内声明。

Qt Designer screenshot

当然,摆脱它们的一种方法是在QSerialPort中包含mappedcombobox.h,但这不是一种非常优雅的方式。我可以以某种方式告诉Qt Designer在生成UI时包含其他文件吗?

1 个答案:

答案 0 :(得分:0)

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

在mainwindow.cpp中:

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