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布局布局器设置阴影边距。 


待更新…… 

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
模块化的Qt C++类库是一种通过分解功能和任务为独立的模块,并将这些模块组合起来以构建复杂的应用程序的开发方法。Qt是一套跨平台的应用程序框架,它提供了用于开发图形用户界面、网络通信、数据库、多媒体和其他功能的丰富的GUI类库。 模块化的Qt C++类库具有以下几个优点: 1. 代码重用:模块化设计使得开发者可以将已经封装好的模块直接引入到新的项目,减少了重复开发的工作量。例如,可以将常用的GUI组件、网络通信、数据库访问等功能封装为独立的模块,并在不同的应用程序重复使用。 2. 易于维护:模块化的设计使得代码的维护更加容易。如果某个模块需要进行更新或修改,只需修改这个模块的代码,而不会对其他模块产生影响。这种松散耦合的设计减少了出错的可能性,并提高了代码可靠性。 3. 提高开发效率:模块化的Qt C++类库提供了一套清晰的接口和标准化的编程规范,使得开发者能够更加高效地进行开发工作。通过对模块复用和组合,开发者可以快速构建出复杂的应用程序。 4. 可扩展性:由于每个模块都是独立的,可以根据需要进行增删改。这种可扩展性使得应用程序能够适应不同的需求和不同的平台。 总而言之,模块化的Qt C++类库的设计思想可以提高开发效率、代码可维护性和可扩展性。通过将复杂的应用程序拆分为独立的模块,并将这些模块组合起来,可以更好地组织和管理代码,从而实现更高效的开发,并提供更好的用户体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值