2011-06-28 138 views
1

interface 列表框對齊問題

enter image description here

招呼每一個我面臨的一個問題。我有一個列表視圖,其中顯示從文件中檢索到的項目我的文件是我的文件文件的每一行都包含製表符分隔的條目(附帶示例文件),但是當我將它顯示在列表視圖中時,項目沒有顯示aligned.here是

void list_load(QStandardItem * root) 
    { 
    FILE * f; 
    f=fopen("/home/cv/mod2an3run/output/mod3run/sample.txt","r"); 

    if(f==NULL) 
    { 
    printf("not open"); 
    root->appendRow(new QStandardItem("ash")); 
    } 

    QString buffer =""; 
    char ch = ' '; 

    while (ch!=EOF) 
    { 
    ch = fgetc(f); 
    if(ch!='\n') 
     { 
     buffer = buffer+ch; 
     } 

    if(ch=='\n') 
     { 
     QString status= range(prob); 
     buffer = buffer +"\t"+ status ; 
     root->appendRow(new QStandardItem(buffer)); 
     buffer=""; 
     } 
    } //while end 

    fclose(f); 
    }// func end 

我重視我的界面和樣本文件進行放好心幫我對準我的列表框項目

回答

3

可能做的輸入流中的標籤結合不同的代碼字段大小。

如果您檢查第二列比其他列左移的兩行,您會看到它們的IP地址相對較短。雖然您的編輯器可能使用8和固定寬度字體的製表符,但您的列表框不同,尤其是,因爲.分隔符是它使用的比例字體中較細的字符。

對於第三列左移的行(除了已經提到的那兩行),同上。

只需爲列表框選擇一個固定寬度的字體,您也許可以解決它。在我看來,你的下注將會把每一行分隔成幾列。你可以這樣做,因爲前兩列中沒有空格(是IP地址)。

然後,使用固定寬度的字體,將每列填充到具有空格的特定大小。這應該可以解決字體寬度製表符的任何問題。

例如,第一個線路可以是:

118.107.140.11<tab>66.20.151.93<tab>Wed May 18 blah blah blah 

獨立的是成三個不同的數據項(分割在舌片或任何其它的分隔符是在使用中),然後墊兩個IP出地址數據項到每個十五個字符(最大的IPv4是255.255.255.255)。

您還需要填寫日期字段以確保您的NON SUSPICIOUS列將排隊。

後輸出與他們之間的一對夫婦的空間:

118.107.140.11 66.20.151.93  Wed May 18 blah blah blah NON SUSPICIOUS 
50.56.2.200  118.107.128.235 Wed May 18 yada yada yada SUSPICIOUS 
+0

非常感謝先生,但先生,但如何墊,我也正在撤回項目f從列表框中將填充效果檢索的項目,因爲我必須在該項目上做一些工作 – sajid

+0

您可以通過追加空格直到長度合適,或者可以使用'stringstream'之類的東西來使其更容易。如果您想從列表中提取東西_back_並使用原始表格,則必須提取整個十五個字符,然後去掉尾部空格。 – paxdiablo

1

你應該使用一個QTableView中有4列,而不是一個而QListView。你應該查找下列類和函數中的出色的Qt幫助系統:

  • QTextStream
  • QTextStream :: readline的
  • 的QString
  • QStringList中
  • 的QString ::分裂
  • Q_FOREACH