Qt 解决QColorDialog控件退出时当前颜色依旧改变

文章目录

  • 现象
  • 解决思路
  • 代码

现象

QColorDialog 颜色选择框在点击取消后,再调用currentColor获取当前颜色时,颜色依旧改变

解决思路

继承QColorDialog,构造时传入当前颜色,并保存。当点击取消时将传入颜色设置为当前颜色

代码

#include 

class HgsColorDialog : public QColorDialog
{
Q_OBJECT
public:
	HgsColorDialog(const QColor& color, QWidget* parent = nullptr)
		:QColorDialog(parent) {m_color = color;}
	~HgsColorDialog() {}
public:
	void setVisiableColor(const QColor& color) {m_color = color;}
	//重点,继承取消槽函数
	protect slots:
	void reject() { setCurrentColor(m_color); done(QDialog::Rejected);}
private:
	QColor m_color;
}

你可能感兴趣的:(Qt)