Qt颜色选择器小工具?

时间:2013-08-15 16:34:46

标签: qt dialog qt4 qt5 color-picker

我有一个QDialog子类,为用户选择提供了一些选项。其中一个选项是颜色。我见过QColorDialog,我需要更简单的东西,这也是一个常规的小部件,所以我可以添加到我的布局作为对话框的一部分。 Qt会提供这样的东西,还是我必须自己制作?如果是后者,最好的策略是什么?

4 个答案:

答案 0 :(得分:7)

您是否看过Qt解决方案的QtColorPicker?

QtColorPicker

QtColorPicker以QComboBox的形式提供了一个小窗口小部件,其中包含一组可自定义的预定义颜色,以便于快速访问。点击...按钮将会打开QColorDialog。它在LGPL下获得许可,因此通过动态链接和正确归属,它可以用于商业软件。搜索QtColorPicker,你就可以找到它。这是指向托管许多Qt解决方案组件的网站的链接:

https://qt.gitorious.org/qt-solutions/qt-solutions-gordons/source/bceb890b844d0b40c72d4422171e732ea38ecbe8:

答案 1 :(得分:4)

Qt本身并没有提供比QColorDialog更简单的东西,但有几个颜色选择小部件作为wwWidgets的一部分,用户为Qt设置了一组小部件(注意这是“wwWidgets”,带有“w” “而不是”wxWidgets“带有”x“)。

答案 2 :(得分:3)

有一种非常简单的方法可以使用QPushButton来显示当前颜色并在单击时拾取一个颜色:

定义:

#include <QPushButton>
#include <QColor>

class SelectColorButton : public QPushButton
{
    Q_OBJECT
public:
    SelectColorButton( QWidget* parent );

    void setColor( const QColor& color );
    const QColor& getColor();

public slots:
    void updateColor();
    void changeColor();

private:
    QColor color;
};

实现:

#include <QColorDialog>

SelectColorButton::SelectColorButton( QWidget* parent )
{
    connect( this, SIGNAL(clicked()), this, SLOT(changeColor()) );
}

void SelectColorButton::updateColor()
{
    setStyleSheet( "background-color: " + color.name() );
}

void SelectColorButton::changeColor()
{
    QColor newColor = QColorDialog::getColor(color,parentWidget());
    if ( newColor != color )
    {
        setColor( newColor );
    }
}

void SelectColorButton::setColor( const QColor& color )
{
    this->color = color;
    updateColor();
}

const QColor& SelectColorButton::getColor()
{
    return color;
}

答案 3 :(得分:2)

我认为QColorDialog最适合您的应用。如果你想要更简单的东西,它将具有减少的功能。我不知道Qt提供这样一个选项的任何标准小部件,但您可以尝试以下内容:

  1. QCombobox,每个条目对应不同的颜色。您甚至可以使用实际颜色的名称颜色。

  2. 一个或多个滑杆,用于调整色调,饱和度,val或R,G,B组件。

  3. 各个R,G,B组件的QLineEdit字段。您还可以使用信号/插槽机制,一旦用户更改颜色,显示给用户的颜色也会相应更改。

  4. 您可以使用“+”和“ - ”符号来增加/减少上述颜色分量值。

  5. 我希望上面给出了一些想法。