0
点赞
收藏
分享

微信扫一扫

QT 5.0.2QSystemTrayIcon系统托盘刷新、QLineEdit IP和端口检验及本程序重新启动

Yaphets_巍 2022-04-18 阅读 63
qt

本人自学QT一年多,也许会有和本人一样有强迫症,比如程序系统托盘刷新和文本编辑框输入IP和端口校验正确的地址和端口,其他字符不可输入。有的会经常用到UDP和TCP,在上述中校验的同时在输入完成后不用重打开主程序生效,而是在输入完成后自动重启主程序。在这整理一下,CSDN里可以搜索到相应的博文:

可在程序启动后用定时器QTImer进行刷新。 这个方法比较稳妥。试了程序打开直接调用,没有刷新图标,可自行尝试.

2、IP和端口校验

CPP文件

#include<QVector>

QIntValidator* IntValidator = new QIntValidator(this);//端口校验
IntValidator->setRange(0, 65535);//端口限制(0,65535)
ui->lineEdit_port->setValidator(IntValidator);
QRegExp rx("^((2[0-4]\\d|25[0-5]|[01]?\\d\\d?)\\.){3}(2[0-4]\\d|25[0-5]|[01]\\d\\d?)$");//IP校验 QRegExpValidator *ip = new QRegExpValidator(rx, this);

ui->lineEdit_ip->setValidator(ip);

3、程序重启:

头文件.h添加槽函数

void reboot();//重启软件
void MainWindow::reboot()//重启软件
{    
qApp->exit(RETCODE_RESTART);

}

在main.CPP添加:

int main(int argc, char *argv[])
{    
QApplication a(argc, argv);    
a.setStyle(QStyleFactory::create("fusion"));    
MainWindow w;    
w.show();    
int exitcode =  a.exec();    
if(exitcode == RETCODE_RESTART)    
{        
// 传入 qApp->applicationFilePath(),启动自己        
QProcess::startDetached(qApp->applicationFilePath(), QStringList());        
return 0;    
}   
 return exitcode;
}

重启示例:

void MainWindow::on_lineEdit_ip_editingFinished()//本地IP
{    
if (ui->lineEdit_ip->text() == NULL)    
{        
ui->lineEdit_ip->setText(configIni->value("config/ip").toString()); //空时等于cofnig.ini中的ip   
}   
 else   
{       
 QMessageBox::information(NULL,"提示","请重启软件生效","重启软件");        
configIni->beginGroup("config");        
configIni->setValue("ip", ui->lineEdit_ip->text());   //非空时把lineEdit_ip文本写入到config.ini中ip的值   
configIni->endGroup();        
this->reboot();  //重启本程序  
}   
}

 
 

        

举报

相关推荐

0 条评论