• 9718阅读
  • 8回复

[ok]如何由QColor格式得到例如 blue green 之类的字符串? [复制链接]

上一主题 下一主题
离线lazybone
 
只看楼主 倒序阅读 楼主  发表于: 2008-11-19
— 本帖被 XChinux 执行加亮操作(2008-11-30) —
谢谢啦
[ 此贴被lazybone在2008-12-10 10:58重新编辑 ]
离线vrcats
只看该作者 1楼 发表于: 2008-11-19
QMap<QColor, QString> colors;
colors[QColor(Qt::red)]="red";
......
离线lazybone
只看该作者 2楼 发表于: 2008-11-20
cat 兄
需要自定义 ?
离线water_wf

只看该作者 3楼 发表于: 2008-11-20
qt global color可以得到,跟星期一样的,自定义的恐怕不行
离线vrcats
只看该作者 4楼 发表于: 2008-11-21
怎么通过global color得到?
离线lazybone
只看该作者 5楼 发表于: 2008-11-21
先贴自己的笨办法,这是在确定一定有相关颜色名称时可用

    /**
     * getColorName()
     */
    protected String getColorName(QColor col) {
        for (int i = 0; i < QColor.colorNames().size(); i++) {
            if (col.name()
                    .equals(new QColor(QColor.colorNames().get(i)).name()))
                return QColor.colorNames().get(i);
        }
        return "";
    }
离线lazybone
只看该作者 6楼 发表于: 2008-11-21
qt global color  有20 个已定义的颜色名(如green)
不能得到如 0xffffff 之类的颜色
QColor.colorNames() 有148个

谢谢 vrcats  water_wf  可能这样逆推的需求有点无理 呵呵
离线XChinux

只看该作者 7楼 发表于: 2008-11-21
转换成形如#ffaabb这样的颜色值可以。
就是将rgb值由16进制显示出来。


QColor cor = plainTextEdit->palette().text().color();
QString strColor = QString("#%1%2%3").arg(cor.red(), 2, 16, QChar('0'))
            .arg(cor.green(), 2, 16, QChar('0')).arg(cor.blue(), 2, 16, QChar('0'));



用ostringstream也可以得到,就是将十进制数转换成十六进制数拼成一个字符串前面加个#
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线lazybone
只看该作者 8楼 发表于: 2008-11-21
QtJambi4.4.0 好像没有 QString
不过思路学习了 谢谢
快速回复
限100 字节
 
上一个 下一个