crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

__ilya__
  опции профиля:
сообщение 11.4.2013, 17:35
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 57
Регистрация: 19.1.2012
Пользователь №: 3143

Спасибо сказали: 0 раз(а)




Репутация:   0  


Подскажите как можно, в процессе работы программы устанавливать цвет объекта типа QPushButton с помощью QColor.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
2 страниц V   1 2 >  
Начать новую тему
Ответов (1 - 9)
ilyabvt
  опции профиля:
сообщение 11.4.2013, 19:50
Сообщение #2


Активный участник
***

Группа: Участник
Сообщений: 297
Регистрация: 23.6.2011
Пользователь №: 2765

Спасибо сказали: 45 раз(а)




Репутация:   3  


С помощью таблиц стилей. Установка стиля функция:
void    setStyleSheet(const QString & styleSheet)

Про стили можно почитать здесь:
http://qt-project.org/doc/qt-5.0/qtwidgets/stylesheet.html

Получить имя цвета можно с помощью функции:
QString QColor::name()


Сообщение отредактировал ilyabvt - 11.4.2013, 19:52
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
__ilya__
  опции профиля:
сообщение 12.4.2013, 17:13
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 57
Регистрация: 19.1.2012
Пользователь №: 3143

Спасибо сказали: 0 раз(а)




Репутация:   0  


Qt4.8

В программе несколько кнопок
QPushButton *b0, *b1, *b2, *b3; // в конструкторе выделю для них память;

Пользователь должен иметь возможность устанавливать их цвет с помощью QColorDialog.
Мне бы кусок кода как установить цвет

Сообщение отредактировал __ilya__ - 12.4.2013, 17:15
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
null
  опции профиля:
сообщение 12.4.2013, 21:43
Сообщение #4


Новичок


Группа: Новичок
Сообщений: 5
Регистрация: 24.12.2012
Пользователь №: 3651

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(__ilya__ @ 12.4.2013, 18:13) *
Qt4.8

В программе несколько кнопок
QPushButton *b0, *b1, *b2, *b3; // в конструкторе выделю для них память;

Пользователь должен иметь возможность устанавливать их цвет с помощью QColorDialog.
Мне бы кусок кода как установить цвет


Навскидку так:
QColorDialog * dl = new QColorDialog();
    dl->exec();
    QColor cl = dl->selectedColor();
    QPushButton *btn = new QPushButton();
    btn->setStyleSheet(QString("background-color: rgb(%1,%2,%3);")
                       .arg(cl.red())
                       .arg(cl.green())
                       .arg(cl.blue()));
    btn->show();
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 13.4.2013, 23:38
Сообщение #5


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


тогда уж:
btn->setStyleSheet(QString("background-color: %1;").arg(cl.name());
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
__ilya__
  опции профиля:
сообщение 16.4.2013, 9:11
Сообщение #6


Студент
*

Группа: Участник
Сообщений: 57
Регистрация: 19.1.2012
Пользователь №: 3143

Спасибо сказали: 0 раз(а)




Репутация:   0  


спасибо работает
#include "widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    button = new QPushButton(this);
    color = Qt::red;
    button->setFixedSize(100, 100);

    connect(button, SIGNAL(clicked()), SLOT(slotDialog()));

    button->setStyleSheet(QString("background-color: rgb(%1,%2,%3);")
                          .arg(color.red())
                          .arg(color.green())
                          .arg(color.blue()));
}

Widget::~Widget()
{
    
}
void Widget::slotDialog()
{
   // QColor tempColor = color;
    color = QColorDialog::getColor(color);
    if(!color.isValid())
        return;

    button->setStyleSheet(QString("background-color: rgb(%1,%2,%3);")
                          .arg(color.red())
                          .arg(color.green())
                          .arg(color.blue()));
}


тока не пойму что вот это значит
QString("background-color: rgb(%1,%2,%3);"
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
lanz
  опции профиля:
сообщение 16.4.2013, 9:54
Сообщение #7


Старейший участник
****

Группа: Участник
Сообщений: 690
Регистрация: 28.12.2012
Пользователь №: 3660

Спасибо сказали: 113 раз(а)




Репутация:   8  


http://qt-project.org/doc/qt-4.8/qstring.html#arg-10
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
__ilya__
  опции профиля:
сообщение 16.4.2013, 11:35
Сообщение #8


Студент
*

Группа: Участник
Сообщений: 57
Регистрация: 19.1.2012
Пользователь №: 3143

Спасибо сказали: 0 раз(а)




Репутация:   0  


как то все сложно.
Не проще было определить функцию член класс QWidget.
Вроде этого
QColor color;
QWidget w;
w.funcSetColor(color);// Функция установки цвета

но раз так сложно сделано значит для чего-то надо. Но для чего?

Сообщение отредактировал __ilya__ - 16.4.2013, 12:05
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
lanz
  опции профиля:
сообщение 16.4.2013, 12:17
Сообщение #9


Старейший участник
****

Группа: Участник
Сообщений: 690
Регистрация: 28.12.2012
Пользователь №: 3660

Спасибо сказали: 113 раз(а)




Репутация:   8  


QWidget это базовый класс, который представляет собой ЛЮБОЙ элемент интерфейса. В том числе определенный пользователем. Для некоторых элементов не имеет смысла такой параметр как цвет или цвет фона.
QWidget является тем чем он является
Цитата
The widget is the atom of the user interface: it receives mouse, keyboard and other events from the window system, and paints a representation of itself on the screen. Every widget is rectangular, and they are sorted in a Z-order. A widget is clipped by its parent and by the widgets in front of it.

У такого определения нет свойства "цвет". Поэтому и смысла делать интерфейс для него нет.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
__ilya__
  опции профиля:
сообщение 16.4.2013, 12:33
Сообщение #10


Студент
*

Группа: Участник
Сообщений: 57
Регистрация: 19.1.2012
Пользователь №: 3143

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(lanz @ 16.4.2013, 13:17) *
QWidget это базовый класс, который представляет собой ЛЮБОЙ элемент интерфейса. В том числе определенный пользователем. Для некоторых элементов не имеет смысла такой параметр как цвет или цвет фона.
QWidget является тем чем он является
Цитата
The widget is the atom of the user interface: it receives mouse, keyboard and other events from the window system, and paints a representation of itself on the screen. Every widget is rectangular, and they are sorted in a Z-order. A widget is clipped by its parent and by the widgets in front of it.

У такого определения нет свойства "цвет". Поэтому и смысла делать интерфейс для него нет.

Понял.
Скажите еще почему у меня не получылось на QPushButton рисовать с помощью QPainter ведь он для него может быть контекстом так как наследован от QWidget
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

2 страниц V   1 2 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 14.7.2025, 9:46