如何使用PushButton-Qt连接ComboBox和TextBrowser?

时间:2019-07-17 13:10:18

标签: c++ qt combobox qcombobox qtextbrowser

我制作了一个读取文件的程序。我有一个组合框,可读取行号: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 ();

}

1 个答案:

答案 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());
    }
}