QComboBox設置數據的時候,下來框的數據往往不是真正需要的數據, 這個時候就希望能進行一種綁定, 能夠訪問到
下拉框所點擊字符串相對應的數據。
方法1: 使用QHash進行保存,如QHash<QString, T> 的方式來訪問T對象。這種做法比較普遍。
方法2: 如下方式構建QComboBOx的item, 然后取數據的時候可以使用itemData()函數來獲取.
colorComboBox = new QComboBox;
foreach (const QString &name, QColor::colorNames()) {
QColor color(name);
colorComboBox->addItem(colorSwatch(color), name, color);
}
也可以采用下述方式進行設置來構建comboBox與實際數據的對應關系。
styleComboBox = new QComboBox;
typedef QPair<QString, Qt::BrushStyle> BrushPair;
foreach (const BrushPair &pair, QList<BrushPair>()
<< qMakePair(tr("No Brush"), Qt::NoBrush)
<< qMakePair(tr("Solid"), Qt::SolidPattern)
<< qMakePair(tr("Dense #1"), Qt::Dense1Pattern)
<< qMakePair(tr("Dense #2"), Qt::Dense2Pattern)
<< qMakePair(tr("Dense #3"), Qt::Dense3Pattern)
<< qMakePair(tr("Dense #4"), Qt::Dense4Pattern)
<< qMakePair(tr("Dense #5"), Qt::Dense5Pattern)
<< qMakePair(tr("Dense #6"), Qt::Dense6Pattern)
<< qMakePair(tr("Horizontal"), Qt::HorPattern)
<< qMakePair(tr("Vertical"), Qt::VerPattern)
<< qMakePair(tr("Cross"), Qt::CrossPattern)
<< qMakePair(tr("Diagonal /"), Qt::BDiagPattern)
<< qMakePair(tr("Diagonal \\"), Qt::FDiagPattern)
<< qMakePair(tr("Diagonal Cross"), Qt::DiagCrossPattern))
styleComboBox->addItem(brushSwatch(pair.second), pair.first,
pair.second);