为用户提供颜色选择反馈的最佳方法是什么?
我有一个带有"选择颜色"按钮的对话框,弹出一个QColorDialog
.选择完成后,我想向用户显示所选的颜色.
通常我使用a QLabel
并在调色板中更改它的背景颜色.这种方法很麻烦,我认为不太便携.
有这样做的标准方法吗?
我这样做的方式如下:
我实际上改变了按钮的颜色,以反映用户的选择.要做到这一点,我正在使用Qt样式表,以确保它是可移植的:
const QString COLOR_STYLE("QPushButton { background-color : %1; color : %2; }"); QColor ChosenColor; // Color chosen by the user with QColorDialog QColor IdealTextColor = getIdealTextColor(ChosenColor); btnChooseColor->setStyleSheet(COLOR_STYLE.arg(ChosenColor.name()).arg(IdealTextColor.name()));
为了确保按钮的标签始终可读,我正在调用方法getIdealTextColor(),这是我从codeproject文章中找到的方法:
//============================================================================== // Nom : getIdealTextColor //! @return an ideal label color, based on the given background color. //! Based on http://www.codeproject.com/cs/media/IdealTextColor.asp //============================================================================== QColor JSPreferencesDlg::getIdealTextColor(const QColor& rBackgroundColor) const { const int THRESHOLD = 105; int BackgroundDelta = (rBackgroundColor.red() * 0.299) + (rBackgroundColor.green() * 0.587) + (rBackgroundColor.blue() * 0.114); return QColor((255- BackgroundDelta < THRESHOLD) ? Qt::black : Qt::white); }