当前位置:网站首页>关于非虚函数的假派生
关于非虚函数的假派生
2022-07-06 03:21:00 【氺月洞天】
以QPushButton的initStyleOption为例
先看源码,该函数为保护函数
void QPushButton::initStyleOption(QStyleOptionButton *option) const
{
if (!option)
return;
Q_D(const QPushButton);
option->initFrom(this);
option->features = QStyleOptionButton::None;
if (d->flat)
option->features |= QStyleOptionButton::Flat;
#if QT_CONFIG(menu)
if (d->menu)
option->features |= QStyleOptionButton::HasMenu;
#endif
if (autoDefault())
option->features |= QStyleOptionButton::AutoDefaultButton;
if (d->defaultButton)
option->features |= QStyleOptionButton::DefaultButton;
if (d->down || d->menuOpen)
option->state |= QStyle::State_Sunken;
if (d->checked)
option->state |= QStyle::State_On;
if (!d->flat && !d->down)
option->state |= QStyle::State_Raised;
option->text = d->text;
option->icon = d->icon;
option->iconSize = iconSize();
}重写该函数:
头文件
#ifndef XX_H
#define XX_H
#include <QtWidgets>
class PushButton : public QPushButton
{
public:
PushButton(QWidget *parent);
~PushButton();
void paintEvent(QPaintEvent *) override;
};
#endif // XX_H
源文件
#include "xx.h"
#include "private/qpushbutton_p.h"
PushButton::PushButton(QWidget *parent)
: QPushButton(parent)
{
}
PushButton::~PushButton()
{
}
void PushButton::paintEvent(QPaintEvent *)
{
QStylePainter p(this);
QStyleOptionButton option;
QPushButton::initStyleOption(&option);
p.drawControl(QStyle::CE_PushButton, option);
}
void QPushButton::initStyleOption(QStyleOptionButton *option) const
{
qInfo() << __LINE__;
if (!option)
return;
Q_D(const QPushButton);
option->initFrom(this);
option->features = QStyleOptionButton::None;
if (d->flat)
option->features |= QStyleOptionButton::Flat;
#if QT_CONFIG(menu)
if (d->menu)
option->features |= QStyleOptionButton::HasMenu;
#endif
if (autoDefault())
option->features |= QStyleOptionButton::AutoDefaultButton;
if (d->defaultButton)
option->features |= QStyleOptionButton::DefaultButton;
if (d->down || d->menuOpen)
option->state |= QStyle::State_Sunken;
if (d->checked)
option->state |= QStyle::State_On;
if (!d->flat && !d->down)
option->state |= QStyle::State_Raised;
option->text = d->text;
option->icon = d->icon;
option->iconSize = iconSize();
}边栏推荐
- Image super-resolution using deep convolutional networks(SRCNN)解读与实现
- Princeton University, Peking University & UIUC | offline reinforcement learning with realizability and single strategy concentration
- Derivation of anti Park transform and anti Clarke transform formulas for motor control
- These are not very good
- Performance analysis of user login TPS low and CPU full
- three.js网页背景动画液态js特效
- Exness foreign exchange: the governor of the Bank of Canada said that the interest rate hike would be more moderate, and the United States and Canada fell slightly to maintain range volatility
- jsscript
- [slam] lidar camera external parameter calibration (Hong Kong University marslab) does not need a QR code calibration board
- Microsoft Research, UIUC & Google research | antagonistic training actor critic based on offline training reinforcement learning
猜你喜欢

Research on cooperative control of industrial robots
![[pointer training - eight questions]](/img/fd/1aa3937548a04078c4d7e08198c3a8.png)
[pointer training - eight questions]

Selenium share

Safety science to | travel, you must read a guide
![[risc-v] external interrupt](/img/9d/eb1c27e14045d9f1f690f4a7f5c596.jpg)
[risc-v] external interrupt

ASU & OSU | model based regularized off-line meta reinforcement learning

Idea push rejected solution

svg拖动点裁剪图片js特效

下一个行业风口:NFT 数字藏品,是机遇还是泡沫?

2.2 STM32 GPIO操作
随机推荐
An article about liquid template engine
[padding] an error is reported in the prediction after loading the model weight attributeerror: 'model' object has no attribute '_ place‘
Getting started with applet cloud development - getting user search content
resulttype和resultmap的区别和应用场景
施努卡:什么是视觉定位系统 视觉系统如何定位
Crazy, thousands of netizens are exploding the company's salary
[pointer training - eight questions]
Overview of OCR character recognition methods
2022工作中遇到的问题四
Audio-AudioRecord Binder通信机制
数据分析——seaborn可视化(笔记自用)
C language judgment, ternary operation and switch statement usage
Performance analysis of user login TPS low and CPU full
Arabellacpc 2019 (supplementary question)
The real machine cannot access the shooting range of the virtual machine, and the real machine cannot Ping the virtual machine
[risc-v] external interrupt
My C language learning record (blue bridge) -- under the pointer
Analyze 菜单分析
Pytorch load data
1003 emergency (25 points), "DIJ deformation"