qt实现颜色下拉框控件
来源:互联网 发布:特殊字体软件下载 编辑:程序博客网 时间:2024/06/05 08:35
控件如图所示:
代码:
ColorCombox.h
#ifndef COLORCOMBOX_H#define COLORCOMBOX_H#include <QToolButton>class ColorCombox : public QToolButton{ Q_OBJECTpublic: ColorCombox(QWidget *parent = 0); ~ColorCombox(); void setButtonIcon(const QString &imageFile, QColor color);private: QMenu* createColorMenu(const char *slot, const char *slotColorBoard); QIcon createColorToolButtonIcon(const QString &imageFile, QColor color); QIcon createColorIcon(QColor color);signals: void sigColorChanged(QColor color); private slots: void OnColorChanged(); // 文本颜色设置 void OnShowColorBoard(); // 颜色板};#endif // COLORCOMBOX_H
ColorCombox.cpp
#include "ColorCombox.h"#include "hit_image.h"#include <QAction>#include <QGridLayout>#include <QMenu>#include <QPainter>#include <QColorDialog>const QColor colors[6][8] = { {QColor(0, 0, 0, 255), QColor(170, 0, 0, 255), QColor(0, 85, 0, 255), QColor(170, 85, 0, 255), QColor(0, 170, 0, 255), QColor(170, 170, 0, 255), QColor(0, 255, 0, 255), QColor(170, 250, 0, 255)}, {QColor(0, 0, 127, 255), QColor(170, 0, 127, 255), QColor(0, 85, 127, 255), QColor(170, 85, 127, 255), QColor(0, 170, 127, 255), QColor(170, 170, 127, 255), QColor(0, 255, 127, 255), QColor(170, 255, 127, 255)}, {QColor(0, 0, 255, 255), QColor(170, 0, 255, 255), QColor(0, 85, 255, 255), QColor(170, 85, 255, 255), QColor(0, 170, 255, 255), QColor(170, 170, 255, 255), QColor(0, 255, 255, 255), QColor(170, 255, 255, 255)}, {QColor(85, 0, 0, 255), QColor(255, 0, 0, 255), QColor(85, 85, 0, 255), QColor(255, 85, 0, 255), QColor(85, 170, 0, 255), QColor(255, 170, 0, 255), QColor(85, 255, 0, 255), QColor(255, 255, 0, 255)}, {QColor(85, 0, 127, 255), QColor(255, 0, 127, 255), QColor(85, 85, 127, 255), QColor(255, 85, 127, 255), QColor(85, 170, 127, 255), QColor(255, 170, 127, 255), QColor(85, 255, 127, 255), QColor(255, 255, 127, 255)}, {QColor(85, 0, 255, 255), QColor(255, 0, 255, 255), QColor(85, 85, 255, 255), QColor(255, 85, 255, 255), QColor(85, 170, 255, 255), QColor(255, 170, 255, 255), QColor(85, 255, 255, 255), QColor(255, 255, 255, 255)}};ColorCombox::ColorCombox(QWidget *parent) : QToolButton(parent){ setPopupMode(QToolButton::MenuButtonPopup); setMenu(createColorMenu(SLOT(OnColorChanged()), SLOT(OnShowColorBoard()))); setAutoFillBackground(true);}ColorCombox::~ColorCombox(){}void ColorCombox::setButtonIcon(const QString &imageFile, QColor color){ setIcon(createColorToolButtonIcon(imageFile, color));}QMenu *ColorCombox::createColorMenu(const char *slot, const char *slotColorBoard){ // 设置透明色 QAction *pActionTransparent = new QAction(this); pActionTransparent->setData(QColor(0, 0, 0, 0)); pActionTransparent->setText(tr("transparent_set")); connect(pActionTransparent, SIGNAL(triggered()), this, slot); QToolButton *pBtnTransparent = new QToolButton; pBtnTransparent->setFixedSize(QSize(142, 16)); pBtnTransparent->setText(tr("transparent_set")); pBtnTransparent->setDefaultAction(pActionTransparent); // 选择其他颜色 QToolButton *pBtnOtherColor = new QToolButton; pBtnOtherColor->setText(tr("other_color_set")); pBtnOtherColor->setFixedSize(QSize(142, 20)); pBtnOtherColor->setAutoRaise(true); pBtnOtherColor->setToolTip("other_color_set"); connect(pBtnOtherColor, SIGNAL(clicked()), this, slotColorBoard); // 基本色 QGridLayout *pGridLayout = new QGridLayout; pGridLayout->setAlignment(Qt::AlignCenter); pGridLayout->setContentsMargins(0, 0, 0, 0); pGridLayout->setSpacing(2); for (int iRow = 0; iRow < 6; iRow++) { for (int iCol = 0; iCol < 8; iCol++) { QAction *action = new QAction(this); action->setData(colors[iRow][iCol]); action->setIcon(createColorIcon(colors[iRow][iCol])); connect(action, SIGNAL(triggered()), this, slot); QToolButton *pBtnColor = new QToolButton; pBtnColor->setFixedSize(QSize(16, 16)); pBtnColor->setAutoRaise(true); pBtnColor->setDefaultAction(action); pBtnColor->setToolTip("white"); pGridLayout->addWidget(pBtnColor, iRow, iCol); } } QWidget *widget = new QWidget; widget->setLayout(pGridLayout); QVBoxLayout *pVLayout = new QVBoxLayout; pVLayout->addWidget(pBtnTransparent); pVLayout->addWidget(widget); pVLayout->addWidget(pBtnOtherColor); QMenu *colorMenu = new QMenu(this); colorMenu->setLayout(pVLayout); return colorMenu;}QIcon ColorCombox::createColorToolButtonIcon(const QString &imageFile, QColor color){ QPixmap pixmap(16, 18); pixmap.fill(Qt::transparent); QPainter painter(&pixmap); QPixmap image(imageFile); QRect target(0, 0, 16, 16); QRect source(0, 0, 16, 16); painter.fillRect(QRect(0, 13, 16, 4), color); painter.drawPixmap(target, image, source); return QIcon(pixmap); return QIcon("");}QIcon ColorCombox::createColorIcon(QColor color){ QPixmap pixmap(16, 16); QPainter painter(&pixmap); painter.setPen(Qt::NoPen); painter.fillRect(QRect(0, 0, 16, 16), color); return QIcon(pixmap);}void ColorCombox::OnColorChanged(){ QAction *pFillColorAction = new QAction(this); pFillColorAction = qobject_cast<QAction *>(sender()); QColor color = qvariant_cast<QColor>(pFillColorAction->data()); this->menu()->close(); emit sigColorChanged(color);}void ColorCombox::OnShowColorBoard(){ this->menu()->close(); QColor color = QColorDialog::getColor(Qt::black, this); if (!color.isValid()) return; emit sigColorChanged(color);}
- qt实现颜色下拉框控件
- 用ComboBox控件实现颜色下拉框
- C#实现WORD颜色下拉框控件全过程
- 利用ComboBox和SymbologyControl控件实现下拉式颜色带
- Qt④控件颜色
- QT设置控件颜色
- QT设置控件颜色
- QT设置控件颜色
- Qt设置控件颜色
- Qt设置控件颜色
- QT设置控件颜色
- C# 实现颜色下拉列表框
- Qt创建窗体下拉框并改变窗体颜色
- Qt学习五:控件二:下拉列表框、字体下拉列表框、QSpinBox控件、QScrollBar控件
- QT 修改控件背景颜色
- 多级联动下拉框控件实现
- ajax控件AutoCompleteExtender实现智能下拉框。
- 颜色下拉框
- 使用sharedpreference存储复杂对象
- 【快乐Python之一】List Comprehensions 和 Generator Expressions
- Java枚举类型
- 一个回调函数不能操作Qt主线程设置Gui的问题
- 解决error:could not open ...jvm.cfg
- qt实现颜色下拉框控件
- 上传文件
- 数据库设计规范及指导
- 【微信公众平台开发之一】微信公众平台开发环境搭建
- Android Parcelable和Serializable的区别
- hdu4268(贪心+set)
- 图解冲突域、广播域
- FusionCharts的使用入门
- solr创建查询索引