我是靠谱客的博主 重要歌曲,最近开发中收集的这篇文章主要介绍ColorComboBox 基于QComboBox的颜色选择下拉框效果代码示例总结,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章目录

  • 效果
  • 代码示例
  • 总结


效果

效果如上

代码示例

ColorComboBox::ColorComboBox(QWidget *parent)
	: QComboBox(parent)
{
    auto listView = static_cast<QListView*>(view());
    listView->setFlow(QListView::LeftToRight);
    listView->setViewMode(QListView::IconMode);
    listView->setSpacing(2);
    listView->setFixedWidth(240);

    for (int i = 0; i < rgbTblSize; ++i) {
        addColor(rgbTbl[i].value);
    }
}

void ColorComboBox::addColor(QColor color)
{
    int index = count();
    QPixmap pix(18, 18);
    pix.fill(color);
    addItem(pix, "", color);
    setItemData(index, QSize(20, 20), Qt::SizeHintRole);
    setItemData(index, color.name(), Qt::ToolTipRole);
}

QColor ColorComboBox::currentColor() const
{
	return currentData(ColorRole).value<QColor>();
}

void ColorComboBox::paintEvent(QPaintEvent* event)
{
    QStylePainter painter(this);
    painter.setPen(palette().color(QPalette::Text));

    // draw the combobox frame, focusrect and selected etc.
    QStyleOptionComboBox opt;
    initStyleOption(&opt);
    painter.drawComplexControl(QStyle::CC_ComboBox, opt);

    // draw color rect
    painter.setPen(Qt::gray);
    painter.setBrush(currentColor());
    painter.drawRect(opt.rect.adjusted(4, 4, -20, -5));
}

总结

1.利用 QListView 的 Flow 和 ViewMode 等定制,实现视图平铺。
2.重新实现 paintEvent 使文本区域变成 颜色块
3.源码下载:https://download.csdn.net/download/boy_fu/86500119

最后

以上就是重要歌曲为你收集整理的ColorComboBox 基于QComboBox的颜色选择下拉框效果代码示例总结的全部内容,希望文章能够帮你解决ColorComboBox 基于QComboBox的颜色选择下拉框效果代码示例总结所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(71)

评论列表共有 0 条评论

立即
投稿
返回
顶部