0

Qt翻訳の使用に問題があります:

デリゲートを使用してコンボボックスを編集関数として取得しているtableViewでは、次のようになります。

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

ComboBoxは、コマンドで変換したい値を持っていtr()ます。他のすべての翻訳は正常に機能しますが、この2つの追加アイテムは翻訳されません。

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;
}

この2つの値の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 に答える