2013-03-26 7 views
0

У меня есть собственный виджет MyToolButton который унаследует от QToolButton. В paintEvent я хочу рисовать только «фон» от оригинала QToolButton. Я имею в виду, мне нужно рисовать только стиль (щелчок, зависание и т. Д.), Но без текста и изображения. Эти вещи я хочу рисовать самостоятельно (с пользовательским форматированием и т. Д.). Когда я звоню QToolButton::paintEvent(ev), тогда все окрашивается. Как исключить изображение и текст из рисунка? Я supose, что я должен использовать drawControl(), drawPrimitive() и drawComplexControl() но не может понимает все эти состоянияQT - переопределение QToolButton краски событие

ответ

0

Исходный код void QToolButton::paintEvent(QPaintEvent *) является:

QStylePainter p(this); 
QStyleOptionToolButton opt; 
initStyleOption(&opt); 
p.drawComplexControl(QStyle::CC_ToolButton, opt); 

QStylePainter::drawComplexControl звонки QStyle::drawComplexControl, которая является чистой виртуальной функции, и его реализация зависит от стиля, который вы используете. Что вам нужно, чтобы перейти к исходному коду конкретного impementation (как QWindowsXPStyle или QGtkStyle), найти drawComplexControl() реализации и использовать его в paintEvent. Для простого управления, такого как QPushButton, вы можете легко переписать свой рисунок совершенно независимо - независимо. Перерисовать QToolButton было бы более сложной задачей. Хорошим выбором будет использовать исходный код QCommonStyle.

+0

Как вы нашли источник? Я новичок в QT, когда я перехожу к объявлению заголовка нажатием CTRL +, F4 не загружается .cpp – Dibo

+0

Это зависит от используемой ОС и типа установки Qt. При использовании библиотек Qt для Windows источник можно найти в% QT_HOME%/src. При использовании deb-based linux и его репозиториев вы можете загрузить исходный код с помощью команды apt-get source qt4-x11. И, наконец, в любой системе, вы всегда можете скачать его здесь: http://releases.qt-project.org/qt4/source/qt-everywhere-opensource-src-4.8.4.tar.gz – Amartel

+0

Исправление: Не% QT_HOME %/src - но% QTDIR%/src – Amartel

Смежные вопросы