Qt5无边框窗口做阴影有什么好方法

html-css027

Qt5无边框窗口做阴影有什么好方法,第1张

调用系统API使窗体下拥有阴影效果 using System.Runtime.InteropServices然后再窗口类的随便哪个地方加上: const int CS_DROPSHADOW = 0x20000const int GCL_STYLE = (-26)//声明Win32 API [DllImport("user32.dll", CharSet = CharSet.A

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)

}

QSS称为Qt Style Sheets也就是Qt样式表,它是Qt提供的一种用来自定义控件外观的机制。QSS大量参考了CSS的内容,只不过QSS的功能比CSS要弱很多,体现在选择器要少,可以使用的QSS属性也要少很多,并且并不是所有的属性都可以用在Qt的所有控件上。

基本和CSS相同,只是有的属性QSS中没有,相当于CSS的子集。

另外上面所有的这些选择器可以联合使用,并且支持一次设置多个选择器类型,用逗号隔开,同CSS一样。

QSS为很多复杂的复合控件提供了子控件的定义,以方便对这些复合控件的各个部分进行样式设置,具体使用下面说明。

QSS的伪状态选择器实际上与CSS中的类似,是以冒号开头的一个选择表达式,他限制了当控件在某一种状态下的时候才能应用QSS规则,伪状态只能描述一个控件的状态,或者是一个复合控件中的子控件的状态。下面列出常用的伪状态:

持续更新ing...