二、自定义Widget
1、SkinItem.h 文件
#ifndef SKINITEM_H
#define SKINITEM_H
#include <QWidget>
#include <QLabel>
#include <QPushButton>
#include <QGridLayout>
class SkinItem : public QWidget
{
Q_OBJECT
public:
explicit SkinItem(QWidget *parent = nullptr)
~SkinItem()
//选项是否选中
void setChecked(bool isChecked)
//设置图片
void setPixmap(QString icon,QString content)
private:
QLabel *m_pContentLabel//皮肤名称
QLabel *m_pCheckLabel//选中
QPushButton *m_pIconButton//皮肤图片
QPushButton *m_pIconlayer//皮肤图层
int defwidth,defheight//宽高
bool ischecked = false
//图片样式
QString style = "QPushButton#SkinItemIcon{"
"border:none"
"background-image:url(%0)"
"}"
"QPushButton#SkinItemIcon:checked{"
"border: 3px solid white"
"}"
signals:
void clicked(QString)
}
#endif // SKINITEM_H
2、SkinItem.cpp 文件
#include "SkinItem.h"
SkinItem::SkinItem(QWidget *parent) :
QWidget(parent),
defwidth(118),
defheight(78)
{
//皮肤文本
m_pContentLabel = new QLabel(this)
m_pContentLabel->setObjectName("SkinItemTitle")
m_pContentLabel->setText("皮肤名称")
m_pContentLabel->setFixedHeight(16)
//图片
m_pIconButton = new QPushButton(this)
m_pIconButton->setFixedSize(QSize(defwidth,defheight))
m_pIconButton->setObjectName("SkinItemIcon")
m_pIconButton->setCheckable(true)
//图片图层
m_pIconlayer = new QPushButton(m_pIconButton)
m_pIconlayer->setFixedSize(QSize(defwidth,defheight))
m_pIconlayer->setObjectName("SkinItemIconlayer")
m_pIconlayer->setCheckable(true)
m_pIconlayer->raise()
//选中控件
m_pCheckLabel = new QLabel(m_pIconlayer)
m_pCheckLabel->setFixedSize(20,20)
m_pCheckLabel->setScaledContents(true)
m_pCheckLabel->setObjectName("SkinItemCheck")
m_pCheckLabel->move(defwidth*0.78,defheight*0.68)
m_pCheckLabel->setVisible(false)
//布局
QVBoxLayout *mainlayout = new QVBoxLayout
mainlayout->setMargin(0)
mainlayout->setSpacing(0)
mainlayout->addWidget(m_pIconButton,0,Qt::AlignCenter)
mainlayout->addWidget(m_pContentLabel,0,Qt::AlignHCenter)
setLayout(mainlayout)
setFixedSize(QSize(defwidth,112))
//信号与槽
QObject::connect(m_pIconlayer, &QPushButton::clicked, [this](bool) {
emit clicked(m_pContentLabel->text().trimmed())
})
}
SkinItem::~SkinItem()
{
}
/**
* 设置是否选中
* @brief SkinItem::setChecked
* @param isChecked
*/
void SkinItem::setChecked(bool isChecked)
{
m_pIconlayer->setChecked(isChecked)
m_pIconButton->setChecked(isChecked)
m_pCheckLabel->setVisible(isChecked)
}
/**
* 设置图片
* @brief SkinItem::setPixmap
* @param icon
*/
void SkinItem::setPixmap(QString icon, QString content)
{
m_pIconButton->setStyleSheet(style.arg(icon))
m_pContentLabel->setText(content)
}
3、使用
QStringList namelist<<"海之夕阳"<<"阳之光芒"<<"樱花夕阳"<<"未来之途"
QGridLayout *gridlayout = new QGridLayout
for (uint8_t i=0i
SkinItem *skinitem = new SkinItem
skinitem->setPixmap(QString(":/image/skin/skin%0.png").arg(i),namelist.at(i))
itemList.append(skinitem)
gridlayout->addWidget(skinitem,0,i,1,1)
if(currentId == i){
skinitem->setChecked(true)
}
QObject::connect(skinitem,&SkinItem::clicked,[this](QString str){
setItemChecked(str)
})
}
void SkinDialog::setItemChecked(QString str)
{
int index = namelist.indexOf(str)
if(currentId == index){
return
}
currentId = index
for (uint8_t i =0i
itemList.at(i)->setChecked(i == index)
}
emit updateskin(index)
}
不知你想设置什么? 如想更改设备信息,可在“系统设置”中选“设备定义”进行更改。 如想更改板号,可调整板子上的拨码开关。不过不建议对系统信息进行更改,可能会造成原有信息的混乱。 工程验收之后基本信息已经消防备案,如更改较大应有消防审批及设计变更手续 最好请当地厂家技术员进行更改! www.768yy.com满意请采纳
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)