Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > отметка в CheckBox-e


Автор: kuvshinka 16.9.2010, 20:58
подскажите пож-та почему в qt-программе под линуксом (опенсусе 10.3) при выборе CheckBox-a (checked=true) появляется крестик, а под виндой - галочка? пробовала на чистых проектах такой эксперимент...мне надо сделать так, чтобы под линуксом тоже была галочка, а не крестик...никакого свойства у чекбокса, отвечающего за отображаемый значок выбора данного виджета, я не нашла... 

Автор: Amp 16.9.2010, 21:12
Зависит от выбранного стиля. В plastique - крестик, в новом cleanlooks - галочка. Стилей десятки и чекбокс будет рисоваться так, как задумали их авторы.

Автор: kuvshinka 16.9.2010, 21:28
...зависит от стиля чего/кого? где и как его можно поменять? с тем расчетом, чтобы была галочка....

Автор: Amp 16.9.2010, 22:17
Цитата(kuvshinka @  16.9.2010,  21:28 Найти цитируемый пост)
...зависит от стиля чего/кого? где и как его можно поменять? с тем расчетом, чтобы была галочка.... 

Стиля (темы) виджетов Qt. Если запустить Qt Designer, ткнуть в меню Form -> Preview In, то можно для себя открыть кое-что новое smile Документация - http://doc.trolltech.com/4.7-snapshot/qstyle.html, поменять можно через QApplication::setStyle, либо глобально для всех приложений в линуксе через qtconfig - http://doc.trolltech.com/4.7-snapshot/qtconfig.html

Хотя тяга к обязательному наличию галочки мне не ясна.

Автор: kuvshinka 17.9.2010, 05:32
Amp: спасибо за ответ- все попробую - отпишусь....просто мне сказали сделать "общепринятую" (галочку) отметку в чекбоксе....

Автор: Mephisto 17.9.2010, 10:03
Цитата(kuvshinka @  17.9.2010,  06:32 Найти цитируемый пост)
Amp: спасибо за ответ- все попробую - отпишусь....просто мне сказали сделать "общепринятую" (галочку) отметку в чекбоксе.... 

Если это единственное к чему могли придраться, то респект  smile 

Автор: kuvshinka 17.9.2010, 19:47
Amp: еще раз спасибо за ответ - стиль задала как
Код

QApplication::setStyle("windows");

1. а можно ли задавать разный стиль для разных виджетов (допустим для кнопок - windows, а для checkbox-ов - cleanlooks)?
2. при стиле windows при нажатии на кнопку (или когда на ней фокус) по ее периметру появляется слабая пунктирная окантовка - как ее убрать?

Автор: Mephisto 17.9.2010, 21:25
Цитата(kuvshinka @  17.9.2010,  20:47 Найти цитируемый пост)
по ее периметру появляется слабая пунктирная окантовка

Это для тех кто пользуется клавиатурой. При нажатии на пробел произойдет нажатие на клавишу. Вроде как фокусировку элементов отключить нельзя.

Автор: kuvshinka 18.9.2010, 17:12
с окантовкой кнопки понятно - нельзя так нельзя....
а что по поводу задания разного стиля для разных виджетов приложения?

Автор: maxxant 19.9.2010, 11:59
Цитата(kuvshinka @ 18.9.2010,  17:12)
а что по поводу задания разного стиля для разных виджетов приложения?

QWidget::setStyle() ?

Автор: kuvshinka 19.9.2010, 18:12
maxxant: а какие бывают стили?:
Код

button1->setStyle(???);

по справке никак не найду перечисления констант-названий стилей...

Автор: Amp 20.9.2010, 10:27
Наследники QCommonStyle: QWindowsVistaStyle, QWindowsXPStyle, QMacStyle, QPlastiqueStyle, QCDEStyle, QMotifStyle и прочие. Некоторые стили специфичны и реализованы только для определенных платформ, например тот же QMacStyle.

По поводу QWidget::setStyle моя позиция совпадает с изложенным в документации - "Warning: This function is particularly useful for demonstration purposes, where you want to show Qt's styling capabilities. Real applications should avoid it and use one consistent GUI style instead.". Даже если отойти от отдельного виджета, жесткое задание стиля для приложения в целом - плохая практика. Опять же, если есть пользователи smile

Автор: maxxant 22.9.2010, 09:37
всё что касается стилей см. подробнее здесь:
http://doc.qt.nokia.com/4.6/style-reference.html

Прим.: QWindowsXPStyle, QWindowsVistaStyle, QMacStyle и поставляемый отдельным солюшеном QtDotNet Style http://qt.nokia.com/products/appdev/add-on-products/catalog/4/Styles/qtdotnetstyl являются платформо-зависимыми.

Примеры использования:

QApplication a(..);
a.setStyle(new QGtkStyle);

QButton b;
b.setStyle(new QCleanlooksStyle);

и более гибко через CSS можно "легко" задавать абсолютно любые стили:

QLabel label;
label.setStyleSheet("font-style:italic;font-size:14px;font-weight:bold;color:blue;");

для своих составных\комплексных  виджетов, по отдельным элементам:
MyComplexWidget w;
w.setStyleSheet(".QProgressBar{border: 1px solid blue;}");

для больших описаний стилей с их загрузкой из ресурсов приложения:
 QFile file(":/stylesheet");
 file.open(QFile::ReadOnly);
 widget.setStyleSheet(QLatin1String(file.readAll()));

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)