7

色の選択についてユーザーにフィードバックを与える最良の方法は何ですか?
をポップする「色の選択」プッシュボタンのあるダイアログがありますQColorDialog。選択が行われた後、選択した色をユーザーに表示したいと思います。
通常、これを行うQLabelには、パレットの背景色を使用して変更します。この方法は面倒で、あまり移植性がないと思います。

これを行う標準的な方法はありますか?

4

6 に答える 6

9

私がやっている方法は次のとおりです。

ユーザーの選択を反映するために、実際にボタンの色を変更します。これを行うために、移植性を確保する 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);
}
于 2008-11-12T07:43:01.130 に答える
4
QColor chosenColor = QColorDialog::getColor(); //return the color chosen by user
setColorButton->setBackgroundColor(chosenColor);
setColorButton->setAutoFillBackground(true);
setColorButton->setFlat(true);

これはどう?

于 2012-03-19T13:06:11.443 に答える
0

Shihe Zhangは、私の実装ではQPushButtonにbackgroundColorプロパティがないことを除いて、私のために機能します。ボタンの色を設定するには:

QPalette p;
p.setColor(QPalette::Button, color);
gColorButton->setPalette(p);
于 2012-10-30T21:38:20.723 に答える
0

あなたが使用している方法は扱いにくいですが、移植性がないと考える理由は何ですか? Qtが動作する場所ならどこでも動作するはずです。

それに加えて、ジェロームの答えと同様に、何とか色で塗りつぶされたボタンを作成しようとしましたが、おそらくそれを行う専用のボタンを作成し、パレットをいじりました。

于 2008-11-12T19:22:32.260 に答える