QTreeWidget不显示QCombobox委托

时间:2017-09-01 12:22:47

标签: c++ qt delegates

我有委托类和方法绘制。我想在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;再见"

但是,而不是绘制组合框,树形图显示只是"你好"第二列中的字符串 为什么? 我该如何解决?

1 个答案:

答案 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);