2012-06-11 2 views
0

Я пытаюсь сделать простой дизайн, чтобы выбрать цвет, и я использую QToolButton для открытия QColorDialog. Моя проблема в том, что я хотел бы, чтобы QToolButton был выбранного цвета, но я только добился того, чтобы установить цвет фона, чего я не хочу.QToolButton и цвет

Вот картина:

enter image description here

Мой код:

QColor color = QColorDialog::getColor(m_couleur); 
if (color.isValid()) m_couleur=color; 
m_labelCouleur->setPalette(QPalette(m_couleur)); 
m_labelCouleur->setAutoFillBackground(true); 
m_buttonCouleur->setPalette(QPalette(m_couleur)); 
m_buttonCouleur->setAutoFillBackground(true); 

В основном я хотел бы, чтобы QToolButton выглядеть примерно так:

enter image description here

редактировать : Можно ли объясните мне, почему сайт не позволит мне добавить «Привет всем» в начале?

+0

Должен ли он быть QToolButton? Я сделал именно то, что вам нужно, используя QPushButton. – Anthony

+0

@ Энтони нет, он вовсе не должен быть QToolButton. Пока я могу дать это измерение, я хочу, чтобы все было в порядке. Какие атрибуты QPushButton вы использовали? – Leo

+2

@Leo: В то время как вежливость приветствуется, я считаю, что приветствия, такие как вы описываете, считаются пухом и, следовательно, не поощряются. Подумайте о StackOverflow как огромной базе данных высокого качества вопросов и ответов вместо группы поддержки для пожилых woodworkers. –

ответ

4
QColor color = QColorDialog::getColor(m_couleur); 
QPixmap px(20, 20); 
px.fill(color); 
m_buttonCouleur->setIcon(px); 

Нет CSS участвует в этом случае (для меня конечно) большой про

+0

Я не думал, что создание значка для каждого цвета будет таким простым. Я выбрал ваше решение, потому что оно выглядит лучше: [link] (http://imgur.com/wLJVv). Решение webclectic выглядело так: [link] (http://i.imgur.com/QQgSB.png) – Leo

2

Используйте функцию setStylesheet для того, чтобы изменить цвет фона вашей кнопки

m_buttonCouleur->setStyleSheet(QString("QToolButton{ background: %1; }").arg(m_couleur.name())); 
2

Я сделал точно, что с помощью QPushButton и установив его таблицу стилей к результату от выбора цвета. Я думаю, что кнопка инструмента, вероятно, должна быть одинаковой.

button->setStyleSheet(QString("background-color: %1; " 
           "border: 1px; " 
           "border-color: black; " 
           "border-style: outset;").arg(color.name())); 
+0

Я сделал это: 'm_buttonCouleur-> setStyleSheet (" background-color:% 1; border: 1px; border-color: black; border-style: outset; "). Arg (m_couleur.name()) ;, но я имеют ошибку: 'недопустимое использование 'void''. Любая идея, что я делаю неправильно? – Leo

+0

@ Leo, Моя вина. Это должно было быть QString для использования функции 'arg'. Обновлено. – Anthony

+0

Спасибо, что работает сейчас, но я выбрал «create-a-icon-every-time», потому что он выглядит лучше, и я предпочитаю не вмешиваться в StyleSheet, если это возможно. Спасибо, что объяснили, почему я получил ошибку. – Leo

Смежные вопросы