Qt一些中的可复用模块

使用简述


开发环境:Window10,Qt 5.9.0 ,mingw32

QT初学者,个人积累收集和整理的一些可复用的模块,博文备份,仅供参考,侵删。

同时感谢各位大佬分享的开发经验,愿与君同行,无限成长

可直接复制使用,但任需要理解其中义。


01- 休眠等待sleep()函数

①widge.h 头文件

private slots:
      void sleep(unsigned int msec);//休眠等待时间(单位毫秒)1000毫秒为1秒

②widge.cpp 源文件

//(可模块化复用)休眠等待函数
void widget::sleep(unsigned int msec)
{
    QTime dieTime = QTime::currentTime().addMSecs(msec);
    while( QTime::currentTime() < dieTime )
        QCoreApplication::processEvents(QEventLoop::AllEvents, 100);
}

③widge.cpp 函数调用

sleep(1000);//阻塞进程一秒后响应

注意:多次频繁调用会阻塞进程,导致bug,可往多线程方向考虑优化。


02- 设置窗体渐隐动画 

①widge.h 头文件:

#include <QPropertyAnimation>//渐隐出现和消失动画

private slots:
    void Anin();//动画渐隐出现
    void Anout();

②widge.cpp 源文件:

//渐隐出现开始0到1,渐隐消失1到0
//动画渐隐出现
void widget::Anin()
{
    QPropertyAnimation*an = new QPropertyAnimation(this,"windowOpacity");
    an->setDuration(500);//单位毫秒
    an->setStartValue(0);
    an->setEndValue(1);
    an->start();
}

//动画渐隐退出
void widget::Anout()
{
    QPropertyAnimation*Tan = new QPropertyAnimation(this,"windowOpacity");
    Tan->setDuration(500);//单位毫秒
    Tan->setStartValue(1);
    Tan->setEndValue(0);
    Tan->start();
}

③widge.cpp 函数调用:

Anin();//动画渐隐出现
Anout();//动画渐隐退出

注意:动画透明度出现和退出时的速度曲线可设置,待学习。


03-设置系统托盘 

①widge.h 头文件:

#include <QSystemTrayIcon>//系统托盘
#include <QMenu>//系统托盘的右击按键

private slots:
    int OnSystemTrayClicked(QSystemTrayIcon::ActivationReason reason); //设置系统托盘
    int onExit();//退出调用
private:
    QSystemTrayIcon m_systray; //系统托盘类

②widge.cpp 源文件: 写在构造函数{……}中

//设置系统托盘图标 和 右键托盘退出菜单按键
m_systray.setIcon(QIcon(":/pic/Timeler-logo.ico"));//可直接复制资源路径
m_systray.show();//显示系统托盘

QMenu *menu = new QMenu();
menu->addAction(ui->actionexit);//注意这个ui->actionexit在Design界面中添加并命名
m_systray.setContextMenu(menu);//设置右键菜单

//关联系统托盘事件
connect(&m_systray,SIGNAL(activated(QSystemTrayIcon::ActivationReason)),
        this,SLOT(OnSystemTrayClicked(QSystemTrayIcon::ActivationReason)));
connect(ui->actionExit,SIGNAL(triggered()),qApp,SLOT(onExit()));

③widge.cpp 源文件:

//系统托盘图标双击显示事件
int Widget::OnSystemTrayClicked(QSystemTrayIcon::ActivationReason reason)
{
    if(reason ==QSystemTrayIcon::Trigger||
        reason==QSystemTrayIcon::DoubleClick)
    {
        //显示主窗口,或者其他
        return 0;
        //this->showNormal();
    }
    return 0;
}
int Widget::onExit()
{
    QApplication::exit(0);
    return 0;
}

  04-设置读取qss样式表  

①widge.h 头文件:

#include <QFile>
#include <QApplication>
//全局公共调用类
class CommonHelper
{
public:
    static void setStyle(const QString &style) {
        QFile qss(style);//style是带双引号的
        qss.open(QFile::ReadOnly);
        qApp->setStyleSheet(qss.readAll());
        qss.close();
    }
};

②widge.cpp 源文件:

CommonHelper::setStyle(":/qss/styleWhite.qss");//注意样式表的有效性

 注意:qss文件需要添加到资源文件中,可以多次在不同的cpp中调用。如无法改变样式表,可能是qss样式表有问题。

开发时,可以先在Design视图中,在widget的样式表中写好全部的样式后复制到qss文件中。 


 05-设置窗体阴影 

①widge.h 头文件:

#include <QGraphicsDropShadowEffect>//窗体阴影

②widge.cpp 源文件:写在构造函数中,或者单独写个函数

//设置窗体背景阴影
//(来至https://blog.csdn.net/qiangzi4646/article/details/89639056)
    this->setAttribute(Qt::WA_TranslucentBackground, true);//设置窗体透明
    this->setWindowFlags(Qt::FramelessWindowHint);//设置无边框
    QGraphicsDropShadowEffect *shadow = new QGraphicsDropShadowEffect(this);
    shadow->setOffset(0, 0);//设置阴影距离
    shadow->setColor(QColor("#444444"));//设置阴影颜色
    shadow->setBlurRadius(30);//设置阴影圆角
    ui->MyFrame->setGraphicsEffect(shadow); //给嵌套QWidget设置阴影
    ui->showa_bg->setMargin(15);//设置边距(此步很重要, 设置宽度为阴影的宽度)

 注意:设计窗体阴影时,需要主窗体包含一个layout布局器。而后layout再嵌套一个widget,控件的布局设置于widget中,再对layout布局布局器设置阴影边距。 


待更新…… 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值