У меня есть собственный виджет MyToolButton который унаследует от QToolButton
. В paintEvent я хочу рисовать только «фон» от оригинала QToolButton
. Я имею в виду, мне нужно рисовать только стиль (щелчок, зависание и т. Д.), Но без текста и изображения. Эти вещи я хочу рисовать самостоятельно (с пользовательским форматированием и т. Д.). Когда я звоню QToolButton::paintEvent(ev)
, тогда все окрашивается. Как исключить изображение и текст из рисунка? Я supose, что я должен использовать drawControl()
, drawPrimitive()
и drawComplexControl()
но не может понимает все эти состоянияQT - переопределение QToolButton краски событие
0
A
ответ
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
.
Смежные вопросы
- 1. Переопределение краски Компонент дважды
- 2. qt qtoolbutton icon blurry
- 3. Java: переопределение краски() И paintComponent()
- 4. Как получить событие краски для кнопок в QT
- 5. Qt 4.8.5 встроенный: выравнивание текста QToolButton
- 6. Переключение между одним QToolButton другим в QT
- 7. Создание краски в pyqt или qt
- 8. Fix QToolButton icon
- 9. как я обрабатывать событие формы краски
- 10. Событие вызова краски от события перемещения мыши
- 11. Как сгенерировать событие краски SWT при запуске
- 12. UWP переопределение событие base.onnavigatedto
- 13. Как использовать QToolButton
- 14. Qt-графика, скрытая другим, но все еще вызывает обновление краски
- 15. Реверсирование макета QToolButton
- 16. Переопределение событий краски в Формуле-1 (1) в Delphi 7?
- 17. Переопределение метода краски в JTextField для рисования текста
- 18. Переопределение выбора OpenGL Qt 4.8.1
- 19. QTabWidget corner Виджет QToolButton исчезает
- 20. Как установить текст под QToolButton в QT не ниже значка
- 21. qt Как стиль QToolBar> Кнопка переполнения QToolButton?
- 22. Как удалить контур на QToolButton
- 23. Сигналы и слоты с Qtoolbutton
- 24. разница между QPushButton и QToolButton
- 25. QToolButton принимает Hover в отключенном состоянии?
- 26. QToolButton выпустил() сигнал, запущенный дважды
- 27. qt - setText за пределами событий краски не в порядке?
- 28. краски поверх этикетки, а не позади него в Qt
- 29. Событие QT + OpenGL loop
- 30. Qt: оптимизировать событие рисования
Как вы нашли источник? Я новичок в QT, когда я перехожу к объявлению заголовка нажатием CTRL +, F4 не загружается .cpp – Dibo
Это зависит от используемой ОС и типа установки 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
Исправление: Не% QT_HOME %/src - но% QTDIR%/src – Amartel