我编写了一个读取文件的程序。我有一个组合框,它读取行号: 1,6,11,..etc。例如,我想在组合框中选择行号1并点击按钮时读取行1-5 (或选择行6时读取行6-10,依此类推)。现在我有了这个。
int line_counter=1;
if(file.open (QIODevice::ReadOnly | QIODevice::Text))
{
while(!stream.atEnd())
{
line = stream.readLine ();
if(!line.isNull ())
{
if((line_counter%5)==1)
ui->comboBox->addItem (line);
line_counter++;
}
}
}
stream.flush ();
file.close ();
void Servers::on_pushButton_clicked()
{
if(file.open (QIODevice::ReadOnly | QIODevice::Text))
{
for(int i=line_counter;i<line_counter+5;i++)
{
ui->textBrowser->setText(stream.readLine(i));
}
}
file.close ();
}发布于 2019-07-17 22:05:12
如果文本已经在comboBox中,那么您可以避免从文件中读取要更新textBrowser的每个团队。
首先,将pushButton信号与您的方法连接起来:
connect(ui->pushButton, &QPushButton::clicked, this, &Servers::on_pushButton_clicked);然后更改on_pushButton_clicked,如下所示:
void Servers::on_pushButton_clicked()
{
if(file.open (QIODevice::ReadOnly | QIODevice::Text))
{
int index = ui->comboBox->currentIndex();
int from = 5 * index;
int to = from + 5;
QTextStream stream(&file);
int lineCount = 0;
QString text;
QString line;
while (stream.readLineInto(&line)) {
if (from >= lineCount && lineCount < to) {
text += line;
text += '\n';
}
lineCount++;
}
ui->textBrowser->setText(text.toString());
}
}https://stackoverflow.com/questions/57076670
复制相似问题