0

我在使用 Qt 翻译时遇到问题:

在一个 tableView 中,我使用一个 Delegate 来获取一个组合框作为编辑功能:

this->gndDelegate = new GenderDelegate(this);
ui->tableView->setItemDelegateForColumn(AthleteModel::GENDER_COLUMN, this->gndDelegate);

ComboBox hast to values,我想用tr()命令翻译。所有其他翻译工作正常,但这两个添加的项目没有翻译:

QWidget *GenderDelegate::createEditor(QWidget *parent, const QStyleOptionViewItem    &option, const QModelIndex &index) const
{
QComboBox *cmbBox = new QComboBox(parent);
cmbBox->addItem(tr("male"), "male");
cmbBox->addItem(tr("female"), "female");

return cmbBox;
}

qm 文件中存在这两个值的表示形式

谢谢你的帮助 ...

4

1 回答 1

2

您必须在委托实现中添加指令 Q_OBJECT。例如:

class KeyConfigurationDelegate : public QItemDelegate
{
    Q_OBJECT //Add This directive !!!

public:
    explicit KeyConfigurationDelegate(QObject *parent = 0);
    ~KeyConfigurationDelegate();

    QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const;

    void setEditorData(QWidget *editor, const QModelIndex &index) const;

    void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const;

    void updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option, const QModelIndex &index) const;

private:

    QStringList list;
    QStringListModel model;
};
于 2014-05-29T21:20:48.287 回答