教你写一个自己的桌面小插件-时钟日历

【教你写一个自己的桌面小插件-时钟日历】

【开机自启】【透明窗口】【托盘运行】【桌面置顶】

闲着没事就用QT简单写了一个小插件,透明背景,白色字体,界面如下:

时钟界面:

日历界面:

代码不多,核心代码主要处理交互逻辑。下边跟着我来看。

新建两个Label控件 (QLabel)

一个用于显示时间,一个用于显示日期。

新建日历控件QCalendarWidget

该控件主要用于显示日历。接下来需要设置日历的风格。

设置Grid可见:

ui->calendarWidget->setGridVisible(true);

设置导航条不可见:

ui->calendarWidget->setNavigationBarVisible(false);

设置不可选中日期:

ui->calendarWidget->setSelectionMode(QCalendarWidget::NoSelection);

设置日期颜色透明:

QTextCharFormat weekdays; weekdays.setBackground(QColor(255,255,255,0));
ui->calendarWidget->setWeekdayTextFormat(Qt::Monday,weekdays);
设置窗体透明:设置背景色透明:

设置前景色为白色不透明:
设置开机自启:开机自启主要是写入注册表来达到每次开机都能自己启动。主要通过QSetting类来实现。QSettings reg("HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run",QSettings::NativeFormat);通过设置 reg.setValue("DeskTop",path)赋值;每次启动前判断变量是否存在,不存在则提醒设置开机启动。也可以在界面加入checkBox来达到勾选开机启动,取消关闭开机自启,很多软件也都是这样做的。
设置程序托盘:
Qt程序托盘主要通过QSystemTrayIcon类来实现。
ico=new QSystemTrayIcon(this); QIcon ic=QIcon(":/1111.jpg"); ico->setIcon(ic);
 action[0]=new QAction(tr("隐藏"), this); QIcon ic2=QIcon(":/bt/hide.png"); action[0]->setIcon(ic2);
 action[1]=new QAction(tr("退出"), this); QIcon ic3=QIcon(":/bt/close.png"); action[1]->setIcon(ic3);
 menu= new QMenu(this); menu->addAction(action[0]);menu->addAction(action[1]);
给事件绑定槽函数:connect(ico,SIGNAL(activated(QSystemTrayIcon::ActivationReason)),this,SLOT(deal(QSystemTrayIcon::ActivationReason))); connect(action[1],SIGNAL(triggered(bool)),this,SLOT(appclose()));connect(action[0],SIGNAL(triggered(bool)),this,SLOT(hide()));右键按下拖动程序:主要实现了以下三个函数:void mousePressEvent(QMouseEvent *event);void mouseMoveEvent(QMouseEvent *event);void mouseReleaseEvent(QMouseEvent *event);代码比较简单就不贴了。在mousePressEvent中判断右键按下,设置移动,在mousePressEvent中判断鼠标右键释放,取消移动,在鼠标移动事件中实现窗口的移动。在鼠标按下是记录鼠标相对于窗口的偏移量,在设置窗口新位置时要减去这个偏移量,目的是为了,保证在拖动过程中鼠标与窗口的相对位置保持不变。
设置单击隐藏日历:在鼠标事件中添加:

定义切换函数:

到这里整个程序就完成了。你get到了么?

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2017年10月15日
下一篇 2017年10月15日

相关推荐