crossplatform.ru

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

4 страниц V   1 2 3 > »   
Ответить в данную темуНачать новую тему
> CommandLinkButton и StyleSheet, фоновая картинка
PunX
  опции профиля:
сообщение 10.4.2010, 12:46
Сообщение #1


Студент
*

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

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




Репутация:   0  


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

но картинка на фоне не появляется. Файл картинки разложил куда только мог.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
pelican
  опции профиля:
сообщение 20.5.2010, 19:25
Сообщение #2


Студент
*

Группа: Участник
Сообщений: 15
Регистрация: 31.8.2009
Из: Россия, г. Кострома.
Пользователь №: 1038

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




Репутация:   0  


Кхм... Ну, как дела? Если вопрос еще висит, попробуй, например, так:
QCommandLinkButton { 
    image: url(:/chat.png);
    border-style: solid;    
}
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 1.1.2011, 19:41
Сообщение #3


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

Группа: Участник
Сообщений: 2941
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

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




Репутация:   34  


Подскажите, как для кнопки называется элемент, который задаёт стиль пунктирной рамочки, что появляется, когда кнопка в фокусе

Вообще, где-нибудь есть подробный справочник по всем элементам стилей всех GUI-классов Qt ?

Сообщение отредактировал Алексей1153 - 1.1.2011, 20:48
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 1.1.2011, 22:27
Сообщение #4


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


Цитата(Алексей1153 @ 1.1.2011, 21:41) *
Вообще, где-нибудь есть подробный справочник по всем элементам стилей всех GUI-классов Qt ?
тут

просто кнопка не популярная, можешь в трекер отписать, чтобы в документацию по CSS добавили эту кнопку
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 2.1.2011, 1:22
Сообщение #5


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

Группа: Участник
Сообщений: 2941
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

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




Репутация:   34  


спасибо, щас пороюсь. Но, чувствую, вопросов будет море ))

http://doc.crossplatform.ru/qt/4.7.x/stylesheet.html

попалось на глаза:
Цитата
Когда таблица стилей активна, вызов QStyle вернёт QWidget::style()

наоборот же )


http://doc.crossplatform.ru/qt/4.7.x/stylesheet-syntax.html

>>Выравнивание выпадающего списка внутри прямоугольника полей изменяется используя свойство subcontrol-position
прям резануло по глазам

Сообщение отредактировал Алексей1153 - 2.1.2011, 12:46
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 2.1.2011, 19:23
Сообщение #6


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

Группа: Участник
Сообщений: 2941
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

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




Репутация:   34  


Цитата(Алексей1153 @ 1.1.2011, 21:41) *
пунктирной рамочки, что появляется, когда кнопка в фокусе

так я и не разобрался с ней. Выяснил только, что цвет меняется (с дефолтного чёрного на белый) при задании градиента фона - любого, к примеру

background-color:(spread: xq:0.0, y1:0.0, x2:0.0, y2:1.0, stop:0.5 #555555, stop:0.0 #aaaaaa)
(сам градиент кнопки отображается нормально)

Сообщение отредактировал Алексей1153 - 2.1.2011, 19:23
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 8.1.2011, 22:23
Сообщение #7


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

Группа: Участник
Сообщений: 2941
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

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




Репутация:   34  


непонятный cпецэффект:

имеется некий стиль
QString Style;

по кнопке делаю переключение МойСтиль<->ДефолтныйСтиль

мой стиль:
qApp->setStyleSheet(Style);

дефолтный стиль:
qApp->setStyleSheet("");

тут всё ок.

но только для элементов, которые созданы через встроенный в креатор редактор форм. Если элемент из плагина был положен на форму в утилите-дизайнере, то такое "общее" отключение стиля не работает для этого элемента - он остаётся разукрашен. Если же сделать "личное" отключение
ui->edit1->setStyleSheet("");

то дефолтный стиль включается.

При всём при этом "общее" ВКЛЮЧЕНИЕ своего стиля работает как надо

В ui_CMainWindow.h контролы, объявленные из встроенного редактора и из дизайнера, имеют совершенно одинаковый код, никак не могу понять, в чём разница в поведении ?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 12.1.2011, 1:29
Сообщение #8


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

Группа: Участник
Сообщений: 2941
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

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




Репутация:   34  


ну а всё-таки. Кто сможет ответить на последние два поста ? :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 12.1.2011, 1:45
Сообщение #9


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


Цитата(Алексей1153 @ 9.1.2011, 0:23) *
В ui_CMainWindow.h контролы, объявленные из встроенного редактора и из дизайнера, имеют совершенно одинаковый код, никак не могу понять, в чём разница в поведении ?
а если провести эксперимент -
Цитата(Алексей1153 @ 9.1.2011, 0:23) *
Если элемент из плагина был положен на форму в утилите-дизайнере, то такое "общее" отключение стиля не работает для этого элемента
открыть в строенным в кратор дизайнером файл Qt Designer'а и сохранить, а потом скомпилировать?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
igor_bogomolov
  опции профиля:
сообщение 12.1.2011, 9:42
Сообщение #10


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

Группа: Сомодератор
Сообщений: 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. Либо наследуемся и отрисовываем кнопочку руками, игнорируя фокус (или задав нужный цвет). Еще вариант - создать собственный стиль.

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

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


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




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