sho*_*osh 6 user-interface qt colors
为用户提供颜色选择反馈的最佳方法是什么?
我有一个带有"选择颜色"按钮的对话框,弹出一个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()));
Run Code Online (Sandbox Code Playgroud)
为了确保按钮的标签始终可读,我正在调用方法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);
}
Run Code Online (Sandbox Code Playgroud)