Russian Qt Forum
Сентябрь 30, 2024, 10:18 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Qt-4.4.1 - в XP и Vista объект QToolButton с меню не оображается как кнопка  (Прочитано 4642 раз)
mal
Гость
« : Сентябрь 01, 2008, 11:01 »

QToolButton юзаю с меню  и текстом без icon.

При использовании "классической схемы" в винде   (Display Properties->Themes ) QToolButton с выпадающим меню, видна как кнопка.
Если меняем схему на Windows XP - то обрамление вокруг текста и стрелки выпадающего меню исчезает, и кнопка внешне выглядит просто как текст на форме. При наезде на кнопку курсором, кнопка принимает форму кнопки.
Как сделать так, чтоб QToolButton с меню выглядел всегда как кнопка, независимо от используемых виндой схем?
Записан
Alex03
Гость
« Ответ #1 : Сентябрь 01, 2008, 11:14 »

QApplication::setStyle(new QWindowsStyle);
Записан
mal
Гость
« Ответ #2 : Сентябрь 01, 2008, 11:18 »

ога, спасибо.

Только при этом мы меняем стиль всему приложению. И недовольный юзер может сказать что твоя прога выглядит иначе, чем все  остальное на его машине.
Может есть менее радикальные способы?
« Последнее редактирование: Сентябрь 01, 2008, 11:21 от mal » Записан
Alex03
Гость
« Ответ #3 : Сентябрь 01, 2008, 11:28 »

Способов немеряно, только всё тот же "недовольный юзер" скажет, а чё это всё приложение как все, а тулбар не как у всех.
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #4 : Сентябрь 03, 2008, 14:51 »

2 mal, можно задать стиль отдельному виджету:
QWidget::setStyle(p_style);
QWidget::setPalette(p_style->standardPalette());
Записан

Юра.
kirill
Гость
« Ответ #5 : Сентябрь 11, 2008, 08:03 »

Поковырялся, навскидку только такое могу предложить.
Унаследоваться от QToolButton и переписать paintEvent.
Код:
void TToolButton::paintEvent ( QPaintEvent * event )
{
  QStylePainter p(this);
  QStyleOptionToolButton opt;
  opt.initFrom(this);

  opt.features = QStyleOptionToolButton::Menu;
  opt.text = "Text";
  opt.state  |= QStyle::State_Sunken;

  p.drawComplexControl(QStyle::CC_ToolButton, opt);
}

Что-то в этом роде.

P.S.
Более простой способ - положи его на другой QToolButton.
« Последнее редактирование: Сентябрь 11, 2008, 09:26 от kirill » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.098 секунд. Запросов: 22.