首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用using Qt连接ComboBox和TextBrowser?

如何使用using Qt连接ComboBox和TextBrowser?
EN

Stack Overflow用户
提问于 2019-07-17 21:10:19
回答 1查看 155关注 0票数 1

我编写了一个读取文件的程序。我有一个组合框,它读取行号: 1,6,11,..etc。例如,我想在组合框中选择行号1并点击按钮时读取行1-5 (或选择行6时读取行6-10,依此类推)。现在我有了这个。

代码语言:javascript
复制
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 ();

}
EN

回答 1

Stack Overflow用户

发布于 2019-07-17 22:05:12

如果文本已经在comboBox中,那么您可以避免从文件中读取要更新textBrowser的每个团队。

首先,将pushButton信号与您的方法连接起来:

代码语言:javascript
复制
connect(ui->pushButton, &QPushButton::clicked, this, &Servers::on_pushButton_clicked);

然后更改on_pushButton_clicked,如下所示:

代码语言:javascript
复制
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());
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57076670

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档