我制作了一个读取文件的程序。我有一个组合框,可读取行号:1、6、11等。我想例如在组合框中选择第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 ();
}
答案 0 :(得分:0)
如果文本已包含在textBrowser
中,则可以避免从文件中读取要更新comboBox
的每个团队。
首先将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());
}
}