首先可以使用setWindowFlags(Qt::FramelessWindowHint);
来隐藏窗体的标题栏, 当然也包括了默认的系统按钮.
然后在可以通过代码或者Qt的Designer在窗体右上角摆放好最小化, 最大化(还原), 和关闭三个按钮并关联好信号槽.
分别设置三个按钮的QSS
QToolButton#toolButtonMin{
border-image: url(:/images/min(1).png);
}
QToolButton#toolButtonMin:hover{
border-image: url(:/images/min(3).png);
}
QToolButton#toolButtonMin:pressed{
border-image: url(:/images/min.png);
}
最大化和还原按钮其实一个, 需要根据窗体的最大化/恢复状态来进行切换
qss中根据最大化属性来进行不同图片的加载
QToolButton#toolButtonMax[maximizeProperty="maximize"]{
border-image: url(:/images/max(1).png);
}
QToolButton#toolButtonMax[maximizeProperty="maximize"]:hover{
border-image: url(:/images/max(3).png);
}
QToolButton#toolButtonMax[maximizeProperty="maximize"]:pressed{
border-image: url(:/images/max.png);
}
QToolButton#toolButtonMax[maximizeProperty="restore"]{
border-image: url(:/images/restore(1).png);
}
QToolButton#toolButtonMax[maximizeProperty="restore"]:hover{
border-image: url(:/images/restore(3).png);
}
QToolButton#toolButtonMax[maximizeProperty="restore"]:pressed{
border-image: url(:/images/restore.png);
}
cpp中同样需要设置, 其中unpolish()和polish()是为了让样式重新绘制
bool bMaximize = this->isMaximized();
ui->toolButtonMax->setProperty("maximizeProperty", bMaximize ? "restore" : "maximize");
ui->toolButtonMax->style()->unpolish(ui->toolButtonMax);
ui->toolButtonMax->style()->polish(ui->toolButtonMax);
ui->toolButtonMax->update();
需要完整代码请访问 QtWidgetsExamples
联系方式:
作者 | 郑天佐 |
---|---|
278969898 | |
主页 | http://www.camelstudio.cn |
邮箱 | camelsoft@163.com |
博客 | http://blog.csdn.net/zhengtianzuo06 |
github | https://github.com/zhengtianzuo |
QQ群 | 199672080 |