我有委托类和方法绘制。我想在QTreeWidget列中显示组合框并为它做什么
ui->treeWidget->setItemDelegateForColumn(2, box);
其中box是我的委托的对象
绘画方法是
void ComboboxDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
{
QStyleOptionComboBox box;
QString text = values[1];
box.currentText = text;
box.rect = option.rect;
QApplication::style()->drawComplexControl(QStyle::CC_ComboBox, &box, painter, 0);
QApplication::style()->drawControl(QStyle::CE_ComboBoxLabel, &box, painter, 0);
}
值是带有两个变量的QMap - " Hello"和#34;再见"
但是,而不是绘制组合框,树形图显示只是"你好"第二列中的字符串 为什么? 我该如何解决?
答案 0 :(得分:0)
如果你有qss文件并且想要自定义你的QComboBox委托你应该在paint()方法中添加一些组合框并替换它:
QApplication::style()->drawComplexControl(QStyle::CC_ComboBox, &box, painter, 0);
为:
QComboBox tmp;
QApplication::style()->drawComplexControl(QStyle::CC_ComboBox, &box, painter, &tmp);