• 3541阅读
  • 0回复

[提问]如何用點擊QTreeWidgetItem 其中一行,就可以取出部份資訊 [复制链接]

上一主题 下一主题
离线nana0130
 
只看楼主 倒序阅读 楼主  发表于: 2012-01-02


這是我用 QtreeWidgetItem 做的表格

我在linux中的原始資料是 長這樣
USB Server|||0|1|192.168.2.17|255.255.255.0|00:28:68:00:00:26|1|2|00|029.000
USB Server|||1|1|192.168.2.191|255.255.255.0|00:1F:D8:68:E0:34|2|2|00|046.000
......類似上面這樣,很多行.......

我已經克服RegExp把資料都一個一個放進去了
目前我想要作一個功能
用滑鼠點下其中一行,然後我就可以抓到 我點下去那行的資訊   例如 client name或是  IP 等資訊
以下是我部份的code
可以用什麼東西去作這件事情呢?
請高手指點我,希望我沒選錯QtreewidgetItem 啊~~Q"Q

void MainWindow::Read_file (QString Filename )
{
     int get_count_n;
     get_count_n= Count_line(Filename); // 去算原始資料到底有幾行
     QString line;
     QFile file(Filename);
     if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
     {
      cout << "打開文件出错." << endl;
     }else {cout << "打開文件." << endl;}

     QTextStream stream (&file);
    for (int i =0; i<get_count_n-1 ; i++)//有幾行就add root 幾次
     {
     line = stream.readLine() ;
     qDebug()<<line;
     addRoot(line);
     }

      file.close();

}

input_line 就是所有的原始資料
我在用regexp把每一段 data擷取出來
放入指定的欄位

void MainWindow::addRoot(QString input_line )
{

    QRegExp rxlen("(.*)[|](.*)[|](.*)[|](.*)[|](.*)[|](.*)[|](.*)[|](.*)[|](.*)[|](.*)[|](.*)[|](.*)");
    // int pos = rxlen.indexIn("USB Server|||0|1|192.168.2.17|255.255.255.0|00:28:68:00:00:26|1|2|00|029.000");
    int pos = rxlen.indexIn(input_line);
     qDebug()<<pos;
     qDebug()<<rxlen.capturedTexts();
     qDebug()<<rxlen.captureCount();

          qDebug()<< rxlen.cap(1);
          qDebug()<< rxlen.cap(2);
          qDebug()<< rxlen.cap(3);
          qDebug()<< rxlen.cap(4);
          qDebug()<< rxlen.cap(5);
          qDebug()<< rxlen.cap(6);
          qDebug()<< rxlen.cap(7);
          qDebug()<< rxlen.cap(8);
          qDebug()<< rxlen.cap(9);
          qDebug()<< rxlen.cap(10);
          qDebug()<< rxlen.cap(11);
          qDebug()<< rxlen.cap(12);
          QString clinet_name =rxlen.cap(1);
          QString clinet_loc_name =rxlen.cap(2);
          QString who_lock =rxlen.cap(3);
          QString dhcp_status =rxlen.cap(4);
          QString client_enu_status =rxlen.cap(5);
          QString IP_addr =rxlen.cap(6);
          QString netmask =rxlen.cap(7);
          QString MAC_addr =rxlen.cap(8);
          QString USB_dev_number =rxlen.cap(9);
          QString client_status =rxlen.cap(10);
          QString device_enu_status =rxlen.cap(11);
          QString client_firmware_version =rxlen.cap(12);
          QTreeWidgetItem *itm = new QTreeWidgetItem(ui->treeWidget);
          itm->setText(0,clinet_name);
          itm->setText(1,clinet_loc_name);
          itm->setText(2,who_lock);
          itm->setText(3,dhcp_status);
          itm->setText(4,client_enu_status);
          itm->setText(5,IP_addr);
          itm->setText(6,netmask);
          itm->setText(7,MAC_addr);
          itm->setText(8,USB_dev_number);
          itm->setText(9,client_status);
          itm->setText(10,device_enu_status);
          itm->setText(11,client_firmware_version);

          ui->treeWidget->addTopLevelItem(itm);
}




快速回复
限100 字节
 
上一个 下一个