Qt学习—qt编写定时关机程序
编写了一个简单的定时关机程序,软件界面如下。顺便记录一下所用的控件的一些简单的使用方法。程序中用到的控件主要是 QLCDNumber(数码管控件)以及QSpinBox()(滚动框控件)。
通过system()调用系统的关机命令。需要包含头文件stdlib.h。此外涉及到数码管以及滚动框显示数字时,前缀“0”的显示和消隐的问题。以下是代码。
首先是main.cpp
#include <QtGui/QApplication>
#include "mainwindow.h"
#include <QTextCodec>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
//Qt文本的国际化显示
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GB18030"));
QTextCodec::setCodecForLocale(QTextCodec::codecForName("GB18030"));
QTextCodec::setCodecForTr(QTextCodec::codecForName("GB18030"));
MainWindow w;
w.show();
return a.exec();
}
其次是mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QDebug>
#include <QMessageBox>
#include <stdlib.h>
#include <QTimer>
#include <QString>
#include <QByteArray>
#include <QSpinBox>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void slot_pushbutton_exec();
void slot_pushbutton_cancel();
void slot_count_down();
void slot_set_hour();
void slot_set_minute();
void slot_set_second();
private:
Ui::MainWindow *ui;
QTimer timer;
void init_sys();
};
#endif // MAINWINDOW_H
最后是mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
init_sys();
QObject::connect(ui->pushButton_exec,SIGNAL(clicked()),this,SLOT(slot_pushbutton_exec()));
QObject::connect(ui->pushButton_cancel,SIGNAL(clicked()),this,SLOT(slot_pushbutton_cancel()));
QObject::connect(&timer,SIGNAL(timeout()),this,SLOT(slot_count_down()));
QObject::connect(ui->spinBox_hour,SIGNAL(valueChanged(int)),this,SLOT(slot_set_hour()));
QObject::connect(ui->spinBox_minute,SIGNAL(valueChanged(int)),this,SLOT(slot_set_minute()));
QObject::connect(ui->spinBox_second,SIGNAL(valueChanged(int)),this,SLOT(slot_set_second()));
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::init_sys()
{
//初始化LCD显示器
//注:display是重载函数,当希望显示09,08,07……等数字形式时
//采用字符串形式,可以显示前缀“0”,数字型显示会自动忽略掉0
ui->lcdNumber_hour->display("88");
ui->lcdNumber_minute->display("88");
ui->lcdNumber_second->display("88");
//设置组合框文本内容的前缀
ui->spinBox_hour->setPrefix("0");
ui->spinBox_minute->setPrefix("0");
ui->spinBox_second->setPrefix("0");
//初始化组合框文本内容
ui->spinBox_hour->setValue(0);
ui->spinBox_minute->setValue(0);
ui->spinBox_second->setValue(0);
//停止定时器
timer.stop();
}
void MainWindow::slot_pushbutton_exec()
{
//以索引号模式判断用户做出的选择
int index_model = ui->comboBox_model->currentIndex();
int index_action = ui->comboBox_action->currentIndex();
//以当前选项文本内容判断用户做出的选择
// QString str_model = ui->comboBox_model->currentText();
// QString str_action = ui->comboBox_action->currentText();
// if(str_model = "设定时间")
if(0==index_model) //指定关机时间模式
{
QString second = ui->spinBox_second->text();
QString minute = ui->spinBox_minute->text();
QString hour = ui->spinBox_hour->text();
QString cmd = "at "+hour+":"+minute+":"+second+" ";
switch(index_action)
{
case 0: //关机指令
cmd = cmd + "shutdown -s";
break;
case 1: //注销指令
cmd = cmd + "shutdown -l";
break;
case 2: //重启指令
cmd = cmd + "shutdown -r";
break;
}
//将QString类对象转换为char*类型
char* ch;
QByteArray ba = cmd.toLatin1();
ch=ba.data();
system(ch); //执行shell命令
}
else if(1==index_model) //倒计时关机模式
{
int delay = ui->spinBox_hour->value()*3600 +
ui->spinBox_minute->value()*60 +
ui->spinBox_second->value();
QString cmd = "";
switch(index_action)
{
case 0: //关机指令
cmd = "shutdown -s -t "+QString::number(delay);
break;
case 1: //注销指令
cmd = "shutdown -l -t "+QString::number(delay);
break;
case 2: //重启指令
cmd = "shutdown -r -t "+QString::number(delay);
break;
}
char* ch;
QByteArray ba = cmd.toLatin1();
ch=ba.data();
system(ch);
//当显示的数字的位数为一位时,需要加上前缀“0”,以达到09,08……的效果
//当显示的数字为两位数时,则需要屏蔽掉前缀“0”。
//设置LCD显示小时
if(ui->spinBox_hour->value()<=9&&ui->spinBox_hour->value()>=0)
ui->lcdNumber_hour->display("0"+QString::number(ui->spinBox_hour->value()));
else
ui->lcdNumber_hour->display(QString::number(ui->spinBox_hour->value()));
//设置LCD显示分钟
if(ui->spinBox_minute->value()<=9&&ui->spinBox_minute->value()>=0)
ui->lcdNumber_minute->display("0"+QString::number(ui->spinBox_minute->value()));
else
ui->lcdNumber_minute->display(QString::number(ui->spinBox_minute->value()));
//设置LCD显示秒
if(ui->spinBox_second->value()<=9&&ui->spinBox_second->value()>=0)
ui->lcdNumber_second->display("0"+QString::number(ui->spinBox_second->value()));
else
ui->lcdNumber_second->display(QString::number(ui->spinBox_second->value()));
timer.start(1*1000);
}
}
void MainWindow::slot_pushbutton_cancel()
{
system("shutdown -a");
init_sys();
}
void MainWindow::slot_count_down()
{
int hour = ui->lcdNumber_hour->value();
int minute = ui->lcdNumber_minute->value();
int second = ui->lcdNumber_second->value();
second--;
if(second<0)
{
second = 59;
minute--;
if(minute<0)
{
minute = 59;
hour--;
if(hour<0)
{
hour = 0;
}
}
}
if(hour<=9&&hour>=0)
ui->lcdNumber_hour->display("0"+QString::number(hour));
else
ui->lcdNumber_hour->display(QString::number(hour));
if(minute<=9&&minute>=0)
ui->lcdNumber_minute->display("0"+QString::number(minute));
else
ui->lcdNumber_minute->display(QString::number(minute));
if(second<=9&&second>=0)
ui->lcdNumber_second->display("0"+QString::number(second));
else
ui->lcdNumber_second->display(QString::number(second));
}
void MainWindow::slot_set_hour()
{
if(ui->spinBox_hour->value()>9)
{
ui->spinBox_hour->setPrefix("");
}
else
{
ui->spinBox_hour->setPrefix("0");
}
}
void MainWindow::slot_set_minute()
{
if(ui->spinBox_minute->value()>9)
{
ui->spinBox_minute->setPrefix("");
}
else
{
ui->spinBox_minute->setPrefix("0");
}
}
void MainWindow::slot_set_second()
{
if(ui->spinBox_second->value()>9)
{
ui->spinBox_second->setPrefix("");
}
else
{
ui->spinBox_second->setPrefix("0");
}
}
Qt学习—qt编写定时关机程序相关推荐
- c语言怎么自定义关机时间,C语言编写简单的定时关机程序
搜索热词 写一个定时关机的小程序,可以立即关闭计算机,也可以一段时间后关闭计算机. 这里主要考察system()命令. 代码实现: #include #include #include int mai ...
- 用bat写一个定时关机程序
用Windows自带的命令行工具shutdown.exe来编写批处理定时关机程序.下面是一个简单的bat脚本示例: 方法一 设置秒数关机 打开记事本复制下面信息进去->另存为.bat文件-> ...
- java语句电脑定时关机_月光软件站 - 编程文档 - Java - windows定时关机程序
应网友yangxjn需要写的一个windows定时关机程序 . /** * Created by IntelliJ IDEA. * autor:cofbean * Date: 2004-3-10 * ...
- Python-Tkinter和PyInstaller简介及定时关机程序的简易实现
欢迎转载,转载请注明出处,感谢! Tkinter简介 Tkinter的基本概念 1. Widgets(窗口小部件) 2. Geometry Management(几何管理) 3. Event Hand ...
- 一个晚上十点定时关机程序
一个晚上十点定时关机程序 方法1:考虑使用批处理文件,建立一个shut.bat文件,打开记事本编辑以下内容: :loop timeout 10 set hour=%time:~0,2% if %hou ...
- Java自动定时关机程序
这是本人的第一次写Java博客,先来写一个简单的,很多小伙伴以前应该都试过自动定时关机,这次给大家带来自动定时关机的代码和取消定时关机的代码. import java.io.IOException;p ...
- 利用Java的GUI编写的定时关机程序
文章目录 程序说明 运行截图 项目结构截图 main类 ActionListener1类 ItemListener1类 Jfwindow类 shut类 XialaItmeListener类 modul ...
- c 语言让电脑自动关机,C语言编写简单的定时关机程序
写一个定时关机的小程序,可以立即关闭计算机,也可以一段时间后关闭计算机. 这里主要考察system()命令. 代码实现: #include #include #include int main() { ...
- Python QT学习——Qt Designer(二)
QT学习 文章目录 QT学习 一.Qt Designer 简介 二.使用方法 三.动态加载UI文件 一.Qt Designer 简介 QT程序界面的 一个个窗口.控件,就是像上面那样用相应的代码创建出 ...
- Swing定时关机程序
本人新手一个,前几天看了一个网上写的定时关机小程序,我就尝试写了一个,程序很简单,毕竟我学习时间还是很短暂. 转载于:https://blog.51cto.com/listar/1198088
最新文章
- sdk没有登录什么意思_不需要接入SDK的第三方登录及分享
- ganglia 监控mysql_Ganglia监控MySQL
- 影响线型缩聚物分子量的因素_【CRPS】通过硼烷引发剂实现氧气引发的超高分子量聚合物的可控合成...
- ORACLE TO_CHAR的一个问题
- C/C++控制台应用程序——画三角形、圆、直线、矩形
- 显式调用构造函数产生的悲剧
- jQuery中$.get()、$.post()和$.ajax()
- C++之STL种类及实现
- tbytes 转 十六进制 string
- Arduino用作usb转ttl串口调试工具
- 从零开始学习Android开发-创建第一个App
- CASS11最新版免狗下载安装教程
- wpsmac和pc版的区别_WPS Mac版本与Microsoft有什么区别?
- Java 识别读取pdf中的二维码信息
- 基于SSH商场管理系统
- JAVAweb开发技术-------(七)POI导入导出excel技术
- 新增spring Converter解析器中使用lambda表达式代替匿名内部类是启动报错:... does the class parameterize those types?
- RHCE培训多少钱?
- 【win】系统工具Win PE
- birt 报表与润乾报表对比
热门文章
- 『动态规划』矩阵连乘
- python 制作标签云
- mac php环境一键安装包,XAMPP for Mac 8.0.0 PHP集成环境一键安装包
- IOS-音乐播放器(附Demo)
- Hyperscan Windows 编译指南
- C语言自学之路十一(详解C语言操作符一)
- 警告怎么去除Reports empty tag body. The validation works in XML / JSP / JSPX / HTML/ XHTML file types
- Axure谷歌浏览器插件
- remp在matlab,基于Matlab的最小二乘支持向量机的工具箱及其应用
- java前后端分离跨域解决方案