Qt学习之路 笔记篇
前言
记录QSettings,QTimer以及自定义属性基本用法
一、QSetting
windows应用会有一些对ini文件的操作,这个时候QSetting就可以使用了,还可以用来读写注册表,常用方法
void getRegInfo(const QString & regKey,QString * regValue){
QSettings reg("HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths",QSettings::NativeFormat);
QStringList groupsList=reg.childGroups();
foreach(QString group,groupsList)
{
if(group==regKey){
reg.beginGroup(group);
*regValue=reg.value(group).toString();
reg.endGroup();
}
}
}
这里重点说一下,有些注册表,group里面是没有keylist的,只有一个默认值,这个时候Qt要怎么读取,如下:
QSettings *reg = new QSettings(“注册表位置”,QSettings::NativeFormat);
strDllPath = reg->value(".",true).toString(); //Qt用.或者是 (Default)
delete reg;
二、QTimer
代码如下(示例):
QTimer * timer=new QTimer(this);
timer->start(50);
connect(timer,SIGNAL(timeout()),this,SLOT(showProgress()));//timeout timer定义的信号
timer->setSingleShot(true); // 仅仅启动定时器一次 根据你的需求来定
void showProgress()
{
if (vv<=真正的值){
ui->progressBar->setValue(vv);
vv++;
}
}
二、设置UI自定义属性
代码如下(示例):
ui->pushButton->setProperty("isChecked",!preChecked);
style()->polish(ui->pushButton);//只刷新这个button的样式
qss写法
#pushButton[isChecked=false]{
color:yellow;
background-image:url(":res/editcut.png");
background-repeat:no-repeat;
background-position:right;
border:none;
}
#pushButton[isChecked=false] :hover{
color:green;
background-image:url(":res/editpaste.png");
background-repeat:no-repeat;
background-position:right;
border:none;
}
#pushButton[isChecked=true]{
color:red;
background-image:url(":res/filehtml.png");
background-repeat:no-repeat;
background-position:right;
}
#pushButton[isChecked=true] :hover{
color:blue;
background-image:url(":res/fileimage.png");
background-repeat:no-repeat;
background-position:right;
}
方法2:
Q_PROPERTY(bool Extend READ isExtend WRITE setExtend);//头文件
connect(ui->pushButton,&QPushButton::clicked,this,[=]{
if (m_isExtend){
m_isExtend=false;
}
else{
m_isExtend=true;
}
style()->polish(ui->pushButton);
});
qss 写法
.MainWindow[Extend="false"] QPushButton#pushButton{
color:yellow;
background-image:url(":res/editcut.png");
background-repeat:no-repeat;
background-position:right;
border:none;
}
.MainWindow[Extend="false"] QPushButton#pushButton:hover{
color:green;
background-image:url(":res/editpaste.png");
background-repeat:no-repeat;
background-position:right;
border:none;
}
.MainWindow[Extend="true"] QPushButton#pushButton{
color:red;
background-image:url(":res/filehtml.png");
background-repeat:no-repeat;
background-position:right;
}
.MainWindow[Extend="true"] QPushButton#pushButton:hover{
color:blue;
background-image:url(":res/fileimage.png");
background-repeat:no-repeat;
background-position:right;
}
总结
未完待续…