如何使用QTextStream读取行一次一个,使用定时器
How to use QTextStream readline one at the time, using timer
我想使用计时器每秒读取一行文件。计时器启动后,读取第一行,一秒钟后,读取第二行。。。。。。
但在QTextStream中并没有读取特定行的功能。关于如何实现这一点,有什么想法吗?
如果我运行以下代码,它将始终返回
QTextStream: no device QTextStream: no device QTextStream: no device QTextStream: no device
timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(sendmsg()));
void simulatorwindow::on_simON_clicked()
{
simfile = QFileDialog::getOpenFileName(this, tr("Open"),"", tr("Files (*.txt)"));
QFile simfile(simfile);
if (!simfile.open(QIODevice::ReadOnly | QIODevice::Text))
return;
QTextStream textsim(&simfile);
timer->start(1000);
qDebug("Start simulation");
}
void simulatorwindow::on_simOFF_clicked()
{
timer->stop();
qDebug("Stop simulation");
}
void simulatorwindow::sendmsg()
{
QString line = textsim.readLine();
QString title = line.section(',', 0,0);
QString chopped = line.section(',', 1,1);
}
在on_simON_clicked
中,将textsim
定义为局部变量,并在sendmsg
中使用同名变量。但它不是同一个变量!
在on_simON_clicked
中,您应该使用(显然)成员变量,因为局部变量在函数之外不可用。如果你在编译器中打开更多的警告,你会得到一个关于局部变量"影子"为成员/全局变量的警告。
与其每次定时器插槽启动时都打开文件,不如将QFile作为simulatorwindow的成员。当程序启动时打开它,每当计时器启动时从中读取。
相关文章:
- Ardunio UNO解决了多个重叠的定时器循环
- 全局变量 多读取器 一个写入器多线程安全?
- 我们能否在stm32f中使用硬件定时器控制两个独立的进程
- Arduino Nano:A4988 使用串行输入时通过定时器进行步进控制不稳定
- 没有信号处理程序的POSIX定时器的目的是什么?
- 在定时器回调函数中使用 Sleep() 会导致C++出现问题吗?
- 我用c++做了一个转换器,把英里转换成公里,把公里转换成英里,把赛尔修斯转换成法赫伦海特,把法赫伦海特转换成赛尔修斯
- 为 RocksDB 实现一个比较器
- 如何在Qt中修改QWebsocket定时器
- C++:一个写入器/多个读取器访问一个unordered_map线程安全
- 我应该为C 中的每种类型都有一个解析器
- 我正在制作一个自动化器,并且我需要自定义它才能在将鼠标钥匙放下时单击
- std::shared_ptr 在一个写入器中,许多阅读器设计是线程安全的吗?
- 是否可以制作一个定时函数,该函数可以将函数作为参数调用,然后运行并计时
- C++Windows中的高分辨率定时器库
- 如何用单个信号处理程序解决这个多linux定时器的问题
- 如何使用QTextStream读取行一次一个,使用定时器
- 在Linux中用C++实现一个低开销的间隔定时器
- c++定时器实现-将一个成员函数分配给信号回调函数指针
- Qt如何杀死一个定时器开始使用startTimer() API