crossplatform.ru

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

> CommandLinkButton и StyleSheet, фоновая картинка
PunX
  опции профиля:
сообщение 10.4.2010, 12:46
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 56
Регистрация: 12.4.2009
Из: Димитровград
Пользователь №: 676

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




Репутация:   0  


Здравствуйте, в качестве кнопки иконки хочу взять CommandLinkButton, редактирую StyleSheet следующим образом:
QCommandLinkButton{
image: url(:/chat.png);
}

но картинка на фоне не появляется. Файл картинки разложил куда только мог.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
igor_bogomolov
  опции профиля:
сообщение 12.1.2011, 9:42
Сообщение #2


Профессионал
*****

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

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




Репутация:   29  


Цитата(Алексей1153 @ 2.1.2011, 19:23) *
так я и не разобрался с ней. Выяснил только, что цвет меняется (с дефолтного чёрного на белый) при задании градиента фона - любого, к примеру
background-color:(spread: xq:0.0, y1:0.0, x2:0.0, y2:1.0, stop:0.5 #555555, stop:0.0 #aaaaaa)
(сам градиент кнопки отображается нормально)
Сам фокус - это PE_FrameFocusRect. За его отрисовку отвечает функция QStyle::drawPrimitive. Как этот фокус будет отрисован зависит от текущего стиля. Где то его вообще не будет.В Windows для его отрисовки используется инвертированный BackgroundColor
кусок исходников для понимания
    case PE_FrameFocusRect:
        if (const QStyleOptionFocusRect *fropt = qstyleoption_cast<const QStyleOptionFocusRect *>(opt)) {
            //### check for d->alt_down
            if (!(fropt->state & State_KeyboardFocusChange) && !proxy()->styleHint(SH_UnderlineShortcut, opt))
                return;
            QRect r = opt->rect;
            p->save();
            p->setBackgroundMode(Qt::TransparentMode);
            QColor bg_col = fropt->backgroundColor;
            if (!bg_col.isValid())
                bg_col = p->background().color();
            // Create an "XOR" color.
            QColor patternCol((bg_col.red() ^ 0xff) & 0xff,
                              (bg_col.green() ^ 0xff) & 0xff,
                              (bg_col.blue() ^ 0xff) & 0xff);
            p->setBrush(QBrush(patternCol, Qt::Dense4Pattern));
            p->setBrushOrigin(r.topLeft());
            p->setPen(Qt::NoPen);
            p->drawRect(r.left(), r.top(), r.width(), 1);    // Top
            p->drawRect(r.left(), r.bottom(), r.width(), 1); // Bottom
            p->drawRect(r.left(), r.top(), 1, r.height());   // Left
            p->drawRect(r.right(), r.top(), 1, r.height());  // Right
            p->restore();

Изменить цвет фокуса в Windows с помощью css можно используя свойство background-color (цвет фокуса будет инвертирован). Но это изменит не только цвет рамки фокуса. Дальше зависит от задачи и от предпочтений. Если нужно чтобы фокус не отображался, устанавливаем для виджета focusPolicy равным NoFocus. Либо наследуемся и отрисовываем кнопочку руками, игнорируя фокус (или задав нужный цвет). Еще вариант - создать собственный стиль.

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- PunX   CommandLinkButton и StyleSheet   10.4.2010, 12:46
- - pelican   Кхм... Ну, как дела? Если вопрос еще висит, попроб...   20.5.2010, 19:25
- - Алексей1153   Подскажите, как для кнопки называется элемент, ко...   1.1.2011, 19:41
- - Litkevich Yuriy   Цитата(Алексей1153 @ 1.1.2011, 21:41) Воо...   1.1.2011, 22:27
- - Алексей1153   спасибо, щас пороюсь. Но, чувствую, вопросов будет...   2.1.2011, 1:22
- - Алексей1153   Цитата(Алексей1153 @ 1.1.2011, 21:41) пун...   2.1.2011, 19:23
- - Алексей1153   непонятный cпецэффект: имеется некий стиль QStri...   8.1.2011, 22:23
- - Алексей1153   ну а всё-таки. Кто сможет ответить на последние дв...   12.1.2011, 1:29
- - Litkevich Yuriy   Цитата(Алексей1153 @ 9.1.2011, 0:23) В ui...   12.1.2011, 1:45
- - igor_bogomolov   Цитата(Алексей1153 @ 2.1.2011, 19:23) так...   12.1.2011, 9:42
- - Алексей1153   Цитата(Litkevich Yuriy @ 12.1.2011, 3:45)...   13.1.2011, 20:00
- - Алексей1153   пост #7 - победил. Дело было в том, что в конструк...   14.1.2011, 10:10
- - Алексей1153   блин, два дня пытаюсь постичь логику стилей, есть ...   18.1.2011, 0:55
- - igor_bogomolov   Цитата(Алексей1153 @ 18.1.2011, 0:55) Ник...   18.1.2011, 8:59
- - Алексей1153   igor_bogomolov, реальная задача - имитация контрол...   18.1.2011, 9:35
- - igor_bogomolov   Цитата(Алексей1153 @ 18.1.2011, 9:35) реа...   18.1.2011, 9:43
- - Алексей1153   Цитата(igor_bogomolov @ 18.1.2011, 11:43)...   18.1.2011, 9:54
- - Litkevich Yuriy   Цитата(Алексей1153 @ 18.1.2011, 11:35) От...   18.1.2011, 18:28
- - Алексей1153   уж и натрахалсо я со стилями ) Но победил. На само...   20.1.2011, 19:08
- - Litkevich Yuriy   Цитата(Алексей1153 @ 20.1.2011, 21:08) Но...   20.1.2011, 21:06
- - Алексей1153   Litkevich Yuriy, обязательно покажу и расскажу, но...   22.1.2011, 22:13
- - Алексей1153   а каким образом добраться до настроек стиля диалог...   23.1.2011, 20:53
- - Litkevich Yuriy   Цитата(Алексей1153 @ 23.1.2011, 22:53) А ...   23.1.2011, 21:32
- - Алексей1153   то есть, вручную придётся. И даже, как понимаю, по...   23.1.2011, 22:22
- - Алексей1153   QCalendarWidget - для этого товарисча вообще стиле...   24.1.2011, 21:27
- - igor_bogomolov   QCalendarWidget - это состовной виджет. Из чего со...   24.1.2011, 21:47
- - Алексей1153   оу, спасибо. Щас покопаемся ) А то я уже свой нача...   24.1.2011, 22:16
- - Алексей1153   В общем, похоже, проще всего будет настроить его т...   24.1.2011, 22:57
- - igor_bogomolov   Алексей1153, чем ты вообще занимаешься? Как то это...   24.1.2011, 23:24
- - Алексей1153   Приложение по захвату мира да вот, заказали сыми...   25.1.2011, 8:23
- - igor_bogomolov   А скриншеты этого приложения есть? Ну или ссылку д...   25.1.2011, 12:58
- - Алексей1153   адынэска, платформа 8.2 в общем-то, поле редактир...   27.1.2011, 20:36


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


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




RSS Текстовая версия Сейчас: 29.11.2024, 21:44