我有一个QDialog
子类,为用户选择提供了一些选项。其中一个选项是颜色。我见过QColorDialog
,我需要更简单的东西,这也是一个常规的小部件,所以我可以添加到我的布局作为对话框的一部分。 Qt会提供这样的东西,还是我必须自己制作?如果是后者,最好的策略是什么?
答案 0 :(得分:7)
您是否看过Qt解决方案的QtColorPicker?
QtColorPicker以QComboBox
的形式提供了一个小窗口小部件,其中包含一组可自定义的预定义颜色,以便于快速访问。点击...
按钮将会打开QColorDialog
。它在LGPL下获得许可,因此通过动态链接和正确归属,它可以用于商业软件。搜索QtColorPicker,你就可以找到它。这是指向托管许多Qt解决方案组件的网站的链接:
答案 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提供这样一个选项的任何标准小部件,但您可以尝试以下内容:
QCombobox,每个条目对应不同的颜色。您甚至可以使用实际颜色的名称颜色。
一个或多个滑杆,用于调整色调,饱和度,val或R,G,B组件。
各个R,G,B组件的QLineEdit字段。您还可以使用信号/插槽机制,一旦用户更改颜色,显示给用户的颜色也会相应更改。
您可以使用“+”和“ - ”符号来增加/减少上述颜色分量值。
我希望上面给出了一些想法。