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

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

Страниц: [1]
  Печать  
Автор Тема: ICS Network - The Place to Learn Advanced Techniques for Developing with Qt  (Прочитано 709 раз)
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2604



Просмотр профиля WWW
« : Июнь 09, 2009, 00:51 »

Зашел вот на форум crossplatform и увидел тему созданную SABROG про ICS Network и думаю дайка создам аналогичную тему у нас на форуме. Думал создать такую темку ещё с годик назад, но ввиду того что многие форумчане несильны в английском - не решился.

Ну да ладно, это все лирика... Улыбающийся

ICSNetwork - это информационный ресурс компании ICS, предназначены для изучение дополнительный приемов разработки на Qt. Как по мне, этот ресурс имеет ценность для новичков в Qt. В ICSNetwork можно найти вэбкасты, статьи.

И так, вышеперечисленный материал можно найти здесь:

Вэбкасты: ICSNetwork
Статьи: Qt White Papers

ЗЫ: Список статей и вебкастов постоянно обновляется
ЗЗЫ: Замечания и пожелания приветствуются Улыбающийся
« Последнее редактирование: Июнь 09, 2009, 10:22 от pastor » Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Admin
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1890



Просмотр профиля
« Ответ #1 : Июнь 09, 2009, 09:52 »

Я бы еще описание добавил - что это такое,  с чем едят ) А то мне ничего не понятно(
Записан
SABROG
phpBB Житель матрицы
******
Offline Offline

Сообщений: 1335



Просмотр профиля
« Ответ #2 : Июнь 10, 2009, 15:43 »

Хочу заметить, что для того, чтобы что-то читать или смотреть надо зарегистрироваться. Чтобы качать white papers нужно выделить галочкой нужную тему и нажать на Download, pdf'ка придет на e-mail.

Чем-то напоминает Qt Quarterly. Например интересную штуку почерпнул, как оптимизировать свой paintEvent, если используется QFontMetrics, чтобы определить размер шрифта. Обычно код выглядит подобным образом:

Код
C++ (Qt)
MyWidget::paintEvent( QPaintEvent* evt )
{
QFontMetrics fm( font() );
int textWidth = fm.width( text() );
int textHeight = fm.height();
// compute layout of the widget using textWidth and
// textHeight, then paint
}
 

Идея в том, чтобы объявить переменную этого класса в классе виджета и переопределить setFont.
Код
C++ (Qt)
class MyWidget
{
...
QFontMetrics mFm;
...
};
 

Код
C++ (Qt)
void MyWidget::setFont( const QFont& newFont )
{
mFm = QFontMetrics( newFont );
QWidget::setFont(newFont);
}
 

Код
C++ (Qt)
MyWidget::paintEvent( QPaintEvent* evt )
{
int textWidth = mFm.width( text() );
int textHeight = mFm.height();
// compute layout of the widget using textWidth and
// textHeight, then paint
}
 

Чтобы еще больше оптимизировать объявляем переменные mTextWidth/mTextHeight в классе виджета...:

Код
C++ (Qt)
void MyWidget::computeTextWidthHeight()
{
mTextWidth = mFm.width( text() );
mTextHeight = mFm.height();
}
 

Код
C++ (Qt)
void MyWidget::setText( const QString& newText )
{
QWidget::setText( newText );
computeTextWidthHeight()
}
 
void MyWidget::setFont( const QFont& newFont )
{
mFm = QFontMetrics( newFont );
QWidget::setFont( newFont );
computeTextWidthHeight();
}
 

Теперь в paintEvent'е всегда известен размер шрифта, который используется в этом виджете, даже если шрифт меняется.
« Последнее редактирование: Июнь 10, 2009, 15:58 от SABROG » Записан

Национальная группа Russian Federation на QtCentre.
Qt: 4.6.2 GCC: 4.4.0TDM
We'd get - widget!
Страниц: [1]
  Печать  
 
Перейти в:  

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