LinuxでQt 5.9を使用すると、いくつかのラベルを持つQComboBoxがあります。QComboBoxはリスト内の値とは異なる値を表示できますか?
qc = new QComboBox;
qc->addItem(tr("Red"));
qc->addItem(tr("Green"));
qc->addItem(tr("Blue"));
ユーザーがQComboBoxをアクティブにし、3つのカラーラベルがドロップダウンリストに表示されます。次に、ユーザーは最初の項目(赤色)を選択します。
私がしたいのは、QComboBoxが選択したものとは異なる値を表示することです。つまり、赤が選択されている場合は、最初の項目の場合は1(または赤の場合はR)になります。緑が選択されている場合は、2番目の項目の2またはGが表示されます。
これを実行する私の目標は、アイテムの文字列の一部がかなり長く、QComboBoxが非常に短いラベルが必要なため、実際には選択範囲全体を表示するために必要な表示スペースドロップダウン状態ではアクティブ化されません。さらに、項目文字列は説明的であり、略語は表示のためによりよく機能する。
編集:
Marekの例を使用すると、これが役立つと思われます。ここに私が持っているものがあります。ユーザーがリストから選択すると、R、G、またはBが表示されるはずです。
QStandardItem *red = new QStandardItem();
red->setData(tr("Red"), Qt::DisplayRole);
red->setData("R", Qt::UserRole);
QStandardItem *green = new QStandardItem();
green->setData(tr("Green"), Qt::DisplayRole);
green->setData("G", Qt::UserRole);
QStandardItem *blue = new QStandardItem();
blue->setData(tr("Blue"), Qt::DisplayRole);
blue->setData("B", Qt::UserRole);
QStandardItemModel *rgb_model = new QStandardItemModel(this);
rgb_model->setItem(0, red);
rgb_model->setItem(1, green);
rgb_model->setItem(2, blue);
QComboBox *rgb_cb = new QComboBox();
rgb_cb->setModel(rgb_model);
Qt :: UserRoleの使い方が分かりません。その後、
qc->setWidth(20);
しかし、あなたは本当に、ユーザーが何かを選択したい場合は、::ちょうど作るそれを短くするために、あなたの例では
ヒント: 'QComboBox' alreayにはデフォルトの' QStandardItemModel'があります。 –
タイプミスを除いて、私はそれを入れましたが、選択された値として表示されているUserRole値に問題がありました(つまり、 。 DisplayRole ["Green"]が選択された値で、ドロップダウンリストがDisplayRole ["Green"]値であることを除いて、すべて動作します。通常の非ドロップダウン状態では、選択された値としてUserRole値が表示されません。 – Ender
これにはまだ問題があります。誰もが考えていることを感謝します。ユーザーロールを通常(非ドロップダウン)状態で表示させることはできません。 – Ender