Qt学习之路 笔记篇

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;
}

总结

未完待续…

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值