【问题标题】:Spliting string and displaying in Qtreewidget拆分字符串并在 Qtreewidget 中显示
【发布时间】:2014-07-04 13:19:59
【问题描述】:

我的编程知识和经验很差。单击按钮时,我正在使用此代码块打开所需的文件;

QString 文件名 = QFileDialog::getOpenFileName();

QFile file(filename);
 if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
     return;

 while (!file.atEnd())
      {
          QByteArray line = file.readLine();
          processline(line);
      }

通过这一行,我在 QtextBrowser 上显示它

void MainWindow::processline(QByteArray paramline) {

ui->veri_cikis->append(paramline.constData());

}

文件上的数据是这样的

0;100;0

0;100;24

24;500;24

24;100;6

6;100;6

我必须用“;”分割数据标记并将它们显示在 Qtreewidget 列上。我怎么做 ?我必须在第一列显示每个第一部分,在第二列显示第二部分,依此类推。我总共有 3 列

【问题讨论】:

  • 你想要树视图还是表格视图?
  • 使用“拆分”功能。分隔符是“;”。
  • 树视图会更好。

标签: c++ arrays string qt


【解决方案1】:

我认为您所描述的更适合表格视图而不是树视图。解析你的字符串并用';'分割它们字符你可以使用QByteArray::split()函数。下面是示例代码,它使用从文件中读取的项目创建和填充表视图:

QFile file(filename);
if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
    return;

QTableWidget *table = new QTableWidget;
int row = 0;
while (!file.atEnd()) {
    QByteArray line = file.readLine();
    QList<QByteArray> tokens = line.split(';');
    int column = 0;
    row++;
    foreach (QByteArray ba, tokens) {
        QTableWidgetItem *item = new QTableWidgetItem(ba);
        table->setItem(row, column++, item);
    }
}

【讨论】:

    猜你喜欢
    • 2020-09-22
    • 1970-01-01
    • 1970-01-01
    • 2020-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多