迎风的舵手

勤学似春起之苗,不见其增,日有所长;辍学如磨刀之石,不见其损,日有所亏.

窗口设置为Qt::Popup时, 如何去掉窗口阴影?

CFlowerWid::CFlowerWid(QWidget *parent)
	: QWidget(parent)
{
	ui.setupUi(this);
	setWindowFlags(windowFlags() | Qt::FramelessWindowHint | Qt::Popup);
	setAttribute(Qt::WA_TranslucentBackground);
}

窗口设置为Qt::Popup时, window7下会自带一个阴影. 

如何去掉窗口阴影?

代码:

bool CFlowerWid::event(QEvent *event)
{
	// class_ameneded 不能是custommenu的成员, 因为winidchange事件触发时, 类成员尚未初始化
	static bool class_amended = false; 
	if (event->type() == QEvent::WinIdChange)
	{
		HWND hwnd = reinterpret_cast<HWND>(winId());
		if (class_amended == false)
		{
			class_amended = true;
			DWORD class_style = ::GetClassLong(hwnd, GCL_STYLE);
			class_style &= ~CS_DROPSHADOW;
			::SetClassLong(hwnd, GCL_STYLE, class_style); // windows系统函数
		}
	}
	return QWidget::event(event);
}

需要执行Windows函数,
SetClassLong(hwnd, GCL_STYLE, class_style);
记录一下, 免得忘了.

阅读更多
版权声明:http://blog.csdn.net/robertkun https://blog.csdn.net/robertkun/article/details/38081081
文章标签: windows 阴影
个人分类: Qt
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭